개발자 첫걸음/백준

백준 수학 - 주사위 [1233]

프로아마추어 2022. 10. 8. 20:02

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

 

1233번: 주사위

지민이는 주사위 던지기 게임을 좋아하여 어느 날 옆에 있는 동호를 설득하여 주사위 던지기 게임을 하자고 하였다. 총 3개의 주사위가 있다. 그리고 이 주사위는 각각 S1(2 ≤ S1 ≤ 20), S2(2 ≤ S2

www.acmicpc.net

 

 

 

나의 답안

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const [a, b, c] = require("fs")
  .readFileSync(0)
  .toString()
  .trim()
  .split(" ");
 
const sums = new Array(81);
sums.fill(0);
 
for (let i = 1; i <= a; i++) {
  for (let j = 1; j <= b; j++) {
    for (let k = 1; k <= c; k++) {
      const sum = i + j + k;
      sums[sum] = ++sums[sum];
    }
  }
}
 
const max = Math.max(...sums);
 
for (let s in sums) {
  if (max === sums[s]) {
    console.log(s);
    return;
  }
}
cs
1. 처음에는 단순히 3개의 for문을 사용하고 싶지 않아서 다른 사람들의 해답에서 대략적인 맥락을 살펴 봤다.

2. 거의 비슷한 맥락이었다. 일단 무식한 방법 처럼 보여도 풀이의 흐름이 대강 보인다면 먼저 풀어보는 습관을 들여야겠다.

3. object의 특성을 활용해 카운트하여 문제를 풀어보려 했으나 주사위의 눈을 합산한 숫자의 정렬이 보장되지 않아 배열의 인덱스 특성을 사용했다.

4. 배열의 indexOf 등의 메서드로 최대값을 비교해서 값을 출력할 수 있었지만 어차피 선형 탐색 기법을 사용하는 메서드여서 그냥 for문을 써보았다.