문제 출처
[문제 요약]
다음과 같은 벌집 모양의 방들이 있다. 각 방의 번호들은 중앙의 1부터 시작해 1씩 늘어난다.
숫자 n이 입력으로 주어졌을때 최소로 지나가는 방의 개수를 출력해야한다.
[풀이]
원소의 보어 모형과 비슷하게 생각하고 풀었다.
벌집의 한 가운데를 level1, 그 주변에 맞닿아있는 방들을 level2라고 하면 방이 늘어나는 개수는 아래 그림과 같이 6의 배수로 늘어난다.
level2 모서리 = 6 * 1(level1)
level3 모서리 = 6 * 2(level2)
현재 레벨까지 포함되는 방의 최대 번호를 nums라는 변수로 두자.
그러면 입력으로 주어진 n보다 nums가 같거나 클 때까지 룹(loop)을 돌림으로써 n이 방을 몇 번 거쳐야하는지 계산 할 수 있다.
룹 안에서는
nums에 이전 레벨 * 6만큼 더해준다
level을 하나 올려준다
[유의할 점]
[파이썬 3 코드]
# -*- coding: utf-8 -*-
from sys import stdin
def count_room(n):
level = 1
nums = 1
while n > nums:
nums += level * 6
level += 1
return level
if __name__ == "__main__":
n = int(stdin.readline())
print(count_room(n))
[백준] 10989 수 정렬하기 3 (Baekjoon Problem 10989: Sort 3) (0) | 2023.08.17 |
---|---|
[백준] 10773 제로 (Baekjoon Problem 10773: Zero) (0) | 2023.08.17 |
[백준] 2231 분해합 (Baekjoon Problem 2231: Sum of Decomposed Numbers) (0) | 2023.08.16 |
[백준] 11866 요세푸스 문제 0 (Baekjoon Problem 11866: Josephus problem 0) (0) | 2023.08.14 |
[백준] 1654 랜선 자르기 (Baekjoon Problem 1654: Cut LAN Cable) (0) | 2023.07.21 |
댓글 영역