mark340
착하게살자
mark340
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • 백준 (11)
    • 알고리즘 (1)
    • Javascript (17)
    • CS (18)
    • 기타 (9)
    • AI (1)
    • Angular (2)
    • Linux (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JavaScript
  • oauth
  • parsing
  • Closure
  • MySQL

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
mark340

착하게살자

[백준 1339] 단어 수학 / Node.js
백준

[백준 1339] 단어 수학 / Node.js

2023. 1. 28. 14:41

https://www.acmicpc.net/problem/1339

 

1339번: 단어 수학

첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대

www.acmicpc.net

 

첫번째 풀이 ( 실패 )

let [N,...input] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map((v) => v.split(''))
input.sort((a,b) => b.length-a.length)

let map = new Map();
let num = 9;

let result = input.map((v) => v.map((v) => {
  if(!map.has(v)){
  map.set(v,num)
  num --
  }
  return map.get(v)
  }).join(''))
.map(Number)


console.log(result.reduce((acc,cur) => acc+cur))
  • 알파벳을 숫자로 치환해서 더했을 때 값이 가장 큰 경우의 최댓값을 출력
  • 예제 입력값들을 입력값의 length로 sort(b-a)하여 순서대로 알파벳을 9부터 key,value로 생성하였다.
  • 문제는 예제2번과 같은 경우 98765 + 483 = 99248 가 되어버려 결과값이 맞지 않는다.
  • 입력값별 알파벳 자릿수의 총 크기를 합산할 필요가 있었다.

 

 

두번째 풀이

const [N,...input] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map((v)=>v.split(''))

const obj = {};

input.forEach((word) => {
  word.forEach((char,idx) => {
    if(!obj[char])  obj[char] = 0;
    obj[char] += 10 ** (word.length-idx-1);
  })
})

let result = Object.values(obj)
  .sort((a,b)=>b-a)
  .reduce((acc,cur,i) => acc + cur * (9-i),0)

console.log(result)
  • 예제에 있는 ACDEB + GCF
  • {
      G: 100,
      C: 1010,  // 1000+10
      F: 1,
      A: 10000,
      D: 100,
      E: 10,
      B: 1
    }
  • 10000A + 1B + 1010C + 100D + 10E + 1F + 100G 
  • (10000 * 9) + (1010 * 8) + (100 * 7) + (100 * 6) + (10 * 5) + (1 * 4) + (1 * 3)
저작자표시 (새창열림)

'백준' 카테고리의 다른 글

[백준 16953] A → B  (0) 2023.01.24
[백준 13305] 주유소 / Node.js / 그리디 알고리즘 기초  (0) 2023.01.24
[백준 11047] 동전0 / Node.js / 그리디 알고리즘 기초  (0) 2023.01.23
[백준 1931] 회의실 배정 / Node.js  (0) 2023.01.23
[백준 2108] 통계학 / 배열 요소의 최빈값 구하기 / Object.entries()  (0) 2023.01.14
    '백준' 카테고리의 다른 글
    • [백준 16953] A → B
    • [백준 13305] 주유소 / Node.js / 그리디 알고리즘 기초
    • [백준 11047] 동전0 / Node.js / 그리디 알고리즘 기초
    • [백준 1931] 회의실 배정 / Node.js
    mark340
    mark340
    착하게삽시다

    티스토리툴바