코테 탈출일지

[백준] 1193번: 분수찾기 - 파이썬/python 본문

구현

[백준] 1193번: 분수찾기 - 파이썬/python

히려이 2023. 7. 9. 22:30

https://www.acmicpc.net/problem/1193

 

1193번: 분수찾기

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

www.acmicpc.net

접근 방식

- 경우의 수를 어떻게 나눌지 고민

 

코드 풀이

n = int(input())
base = 1

while n - base >= 0: # 음수가 나오지 않을 때까지
    n -= base # 1, 2, 3 ... 순서대로 빼주며 몇번째 분수인지
    base += 1 # 몇번째 줄에 있는지 확인

if base % 2 == 1: # 위 -> 아래 방향 탐색
    if n == 0: # 딱 맞게 끝나는 경우는 따로 고려
        print('{}/{}'.format(base-1, 1))
    else:
        print('{}/{}'.format(base-n+1, n))      
else: # 아래 -> 위 방향 탐색
    if n == 0: # 딱 맞게 끝나는 경우는 따로 고려
        print('{}/{}'.format(1, base-1))
    else:
        print('{}/{}'.format(n, base-n+1))

몇 번째 줄인지를 계산할 수 있도록 base 변수를 만들었고, 몇 번째 분수인지를 계산할 수 있도록 나머지를 활용하여 n 변수를 활용했습니다. 처음에는 모두 위 -> 아래 대각선 방향으로 탐색을 하는 방식으로 코딩을 해서 오류가 났습니다. 하지만 짝수번째 줄인지, 혹은 홀수번째 줄인지에 따라 분수의 구성을 다르게 할 수 있도록 수정하였습니다.