Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 1193번 - 분수찾기 (PYTHON 풀이) 본문
문제:

문제 자체를 이해하는데 시간이 꽤 걸렸다.. 지그재그 순서라는 말이 애매모호하다.

정리하자면 지그재그라는 말은 곧 상기 이미지를 의미한다. 1/1 에서 시작해서 1/2, 2/1 , 3/1, 2/2, 1/3 화살표까지 간뒤 1/4, 2/3... 이런식으로 왔다갔다 하면서 순서가 이동하는데 사용자로부터 값을 받고 그 수만큼 이동했을 때 타일 안에 있는 분수를 출력하면 된다.
풀이:
a=int(input())
li = 0
e = 0
while a > e:
li+=1
e+=li
b = e - a
if li % 2 == 0:
le = li - b
ri = b + 1
else:
le = b + 1
ri = li - b
print(f"{le}/{ri}")
이번 문제도 규칙을 찾아야 풀 수 있다. 크게 규칙이 두개가 있는데 다음과 같다.
1. 대각선에 포함되는 분수의 개수는 대각선과 동일하다. (첫번째 선에 포함되는 분수 : 1개, 두번째 선 : 2개...)
2. 짝수 대각선에 있는 분수는 시작점에서 끝점으로 갈수록 분자가 1씩 늘어나고 분모가 1씩 감소한다.
홀수 대각선에 있는 분수는 시작점에서 끝점으로 갈수록 분자가 1씩 줄어들고 분모가 1씩 늘어난다.
위 규칙을 참고해서 만들면 문제를 풀 수 있다. 하나의 선에서 화살표가 가리키는 맨 마지막 구역을 e에 담고 사용자로부터 입력받은 값에 도달할 때까지의 선과 맨 마지막 구역을 규칙에 따라 추가하면 된다.
이때 반복문은 사용자 입력값보다 현재 마지막 구역이 작으면 선의 개수를 늘려줘야하므로 이를 늘리기 위한 코드이다.
.
.
최근에 풀었던 코드 문제 중 가장 어려웠던 것 같다. 그래서 등급이..
파이팅!
'CODING 💻' 카테고리의 다른 글
| 백준 15439번 - 베라의 패션 (PYTHON 풀이) (0) | 2025.09.17 |
|---|---|
| 백준 27433번 - 팩토리얼 2 (PYTHON 풀이) (0) | 2025.09.16 |
| 백준 2292번 - 벌집 (PYTHON 풀이) (0) | 2025.09.14 |
| 백준 9063번 - 대지 (PYTHON 풀이) (0) | 2025.09.13 |
| 백준 14215번 - 세 막대 (PYTHON 풀이) (0) | 2025.09.12 |
