본문 바로가기

알고리즘/python

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

반응형

[문제 출처]

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

 

1193번: 분수찾기

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

www.acmicpc.net

 

[문제 풀이]

처음에는 진행 방향이 지그재그가 아닌 일방향인 줄 알고 풀었다가 답이 잘못 나와서 당황했던 문제이다.

1,2,3,,으로 진행되는 순서가 지그재그이니 이 점을 주의해서 문제를 이해해야 한다.

 

분수의 값은 행의 값이 분자로 열의 값이 분모로 나타나 있다.

따라서 n번째 숫자가 어느 위치에 있는지 알 수 있다면 분수의 값을 알 수 있다.

 

line은 대각선으로 봤을 때 몇 번째 줄인 지를 나타내는 함수이고, end는 해당 line에서 가장 큰 수를 나타낸다.

while문으로 n이 end값보다 작은지 큰지를 비교하여 n이 몇 번째 line에 있는지 확인하고 end의 값과 n의 차이를 통해서 

해당 line에 몇 번째에 위치했는지를 계산한다.

 

또한 짝수번째 줄인 지 홀수번째 줄인 지에 따라서 진행방향이 달라 분모와 분자의 값이 반대가 된다.

#1193

n = int(input())

line = 0
end = 0
while n > end:
    line += 1
    end += line

diff = end - n
if line % 2 == 0:
  row = line - diff
  col = diff + 1
else:
  row = diff + 1
  col = line - diff

print(str(row)+'/'+str(col))
반응형