jyamethyst21 님의 블로그

백준 1193번 - 분수찾기 (PYTHON 풀이) 본문

CODING 💻

백준 1193번 - 분수찾기 (PYTHON 풀이)

jyamethyst21 2025. 9. 15. 23:27

문제:

 

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

정리하자면 지그재그라는 말은 곧 상기 이미지를 의미한다. 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에 담고 사용자로부터 입력받은 값에 도달할 때까지의 선과 맨 마지막 구역을 규칙에 따라 추가하면 된다.

이때 반복문은 사용자 입력값보다 현재 마지막 구역이 작으면 선의 개수를 늘려줘야하므로 이를 늘리기 위한 코드이다.

.

.

최근에 풀었던 코드 문제 중 가장 어려웠던 것 같다. 그래서 등급이..

파이팅!