반응형
[문제 출처]
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))
반응형
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 백준 1100 하얀 칸 (0) | 2023.01.18 |
---|---|
[python/파이썬] 백준 1057 토너먼트 (0) | 2023.01.17 |
[python/파이썬] 백준 1076 저항 (0) | 2023.01.13 |
[python/파이썬] 백준 1284 집 주소 (0) | 2023.01.12 |
[python/파이썬] 백준 1032 명령 프롬프트 (0) | 2023.01.11 |