본문 바로가기
Algorithm/Baekjoon

백준 2292번

by minhi 2025. 1. 10.

백준 2292번을 풀어보았다.

 

1번 방은 최소 1개의 방, 2~7번 방은 최소 2개의 방, 8~19번 방은 최소 3개의 방, 20~37번 방은 최소 4개의 방을 지난다.

 

1 = 1 (최소 1개 방)

7 = 1 + 6 * 1 (최소 2개 방)

19 = 1 + 6 * 1 + 6 * 2 (최소 3개 방)

37 = 1 + 6 * 1  + 6 * 2 + 6 * 3 (최소 4개 방)

...

 

과 같은 규칙이 있다.

 

위 규칙을 토대로 작성한 코드는 아래와 같다.

let input = require('fs').readFileSync('/dev/stdin').toString()

input = Number(input)

let count = 1, rooms = 1

while (true) {
  if (input > rooms) {
    rooms += 6 * count++
  } else {
    break
  }
}

console.log(count)

 

처음에는 위와 같이 작성했는데,

 

다른 풀이들을 더 찾아보니 while (true) { if (input > rooms) 부분을 다음과 같이 수정하는 게 더 자연스러울 듯 하다.

let input = require('fs').readFileSync('/dev/stdin').toString()

input = Number(input)

let count = 1, rooms = 1

while (rooms < input) {
  rooms += 6 * count++
}

console.log(count)

'Algorithm > Baekjoon' 카테고리의 다른 글

백준 2869  (0) 2025.01.10
백준 1193번  (0) 2025.01.10
백준 2720번  (0) 2025.01.10
백준 2903번  (1) 2025.01.09
진법 관련 유형  (0) 2025.01.09