728x90
반응형
문제 설명
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
문제 링크
https://www.acmicpc.net/problem/2292
입출력 예시
프로그램 코드
N = int(input()) #N 입력
cnt = 1 #각 층 별 방 수
num = 0 #층 별 증가하는 방 수
while cnt < N: #N 이 포함된 층 찾기
num += 6
cnt += num
print(num // 6 + 1)
프로그램 코드 설명
문제에 주어진 방을 분석해보면 다음과 같다.
1겹 방 : 1
2겹 방 : 2, 3, 4, 5, 6, 7
3겹 방 : 8 ~ 19
4겹 방 : 20 ~ 37
5겹 방 : 38 ~ 61
1겹 방 개수 : 1
2겹 방 개수 : 6
3겹 방 개수 : 12
4겹 방 개수 : 18
5겹 방 개수 : 24
이렇게 방의 개수는 6의 배수로 커지는 것을 확인할 수 있다.
이를 코드에서는 num에 6의 배수를 저장해가면서 방을 늘려줬다.
cnt 는 현재 총 방의 개수이다.
반복문은 총 방의 개수가 N 보다 작은 동안 반복한다.
728x90
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[파이썬] 백준 2751번 수 정렬하기 2 문제 풀이 python (1) | 2024.02.06 |
---|---|
[파이썬] 백준 2609번 최대공약수와 최소공배수 문제 풀이 python (0) | 2024.02.06 |
[파이썬] 백준 2231번 분해합 문제 풀이 python (0) | 2024.02.06 |
[파이썬] 백준 2164번 카드2 문제 풀이 python (1) | 2024.02.06 |
[파이썬] 백준 2108번 통계학 문제 풀이 python (0) | 2024.02.05 |