1. 2292번
1) 문제
2) 풀이
n= int(input ())
room = 1
i = 1
while n > room:
room += 6 * i
i += 1
print(i)
3) 문법 및 풀이과정
- 문제 이해
일종의 군 수열이라고 볼 수 있다.
1군 : 1
2군 : 2 ~ 7
3군 : 8 ~ 19
4군 : 20 ~ 37
...
위 군 수열의 규칙을 찾아보면 군이 하나씩 증가할 때마다 1군은 1개의 항을 가지고 n군(n>1)은 6(n-1)개의 항을 가짐을 알 수 있다. 따라서 이 항의 개수를 통해 주어진 입력값이 몇 번째 군인지를 알 수 있고 이 때, 몇 번째 군인지가 곧 주어진 방까지 가는 방의 최소 개수라고 볼 수 있다.
- 문제 풀이
(1) 입력값을 받는다.
(2) room =1 / i = 1 이라고 설정한다. 이 때 room은 항의 개수, 방들의 개수를 의미하며 각 군의 마지막 항의 번호를 말한다. i는 room이 다음 군의 마지막 항 값으로 넘어갈 때마다 1을 더하여 몇 번째 군인지를 의미하도록 한다.
(3) n>room일 동안 작동하는 while문을 작성한다. n이 room을 넘어가는 순간 while문은 중단되며 그 때 군의 번호를 출력할 것이다.
(4) while문 내에서 room은 6*i만큼 더해진 후, i에는 1을 더한다. 이 때, i에 1을 더하는 것이 나중에 이뤄져야 최종 출력될 때 해당 군의 r값이 제대로 출력된다.
(5) 군의 번호인 i를 출력한다.
'Learning-log > Algorithm 문풀' 카테고리의 다른 글
백준(파이썬, python) - 2869번 달팽이는 올라가고 싶다(2022.11.05) (0) | 2022.11.06 |
---|---|
백준(파이썬, python) - 1193번 분수찾기 (0) | 2022.11.05 |
백준(파이썬, python) - 1712번 손익분기점(2022.11.02) (0) | 2022.11.03 |
백준(파이썬, python) - 2738번 행렬 덧셈(2022.11.02) (0) | 2022.11.03 |
백준(파이썬, python) - 2566번 최댓값 (2022.11.02) (0) | 2022.11.03 |