반응형
문제
https://www.acmicpc.net/problem/1193
코드
import sys
input = sys.stdin.readline
x = int(input())
line = 0
max_num = 0
while x > max_num:
line += 1
max_num += line
gap = max_num - x
if line%2 == 0:
top = line - gap
bot = gap + 1
else:
top = gap + 1
bot = line - gap
print('%d/%d'%(top,bot))
설명
홀수 라인과 짝수 라인의 규칙과 x에 따른 라인의 규칙을 찾으면 해결이 가능한 문제다.
홀수 줄은 분자가 1씩 줄어들고 분모는 1씩 늘어난다.
짝수 줄은 분자가 1씩 늘어나고 분모는 1씩 줄어든다.
x가 max_num보다 작으면 line을 1개 늘려주고,
max_num에 line을 더해주는 작업을 한다.
(1줄이 늘어나면 1씩 증가하는 누적합: 1 - 2 - 3 -...)
이후 max_num과 x의 차이를 gap이라는 함수로 두고 각 라인의 규칙에 맞게 적용시켜 준다.
짝수 줄의 경우 line에서 gap을 뺀 수가 분자가 되고,
gap에 1을 더해준 수가 분모가 된다.
홀수 줄의 경우 line에서 gap을 뺀 수가 분모가 되고,
gap에 1을 더해준 수가 분자가 된다.
이후 결과값을 출력해준다
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 10250: ACM 호텔 (0) | 2022.12.16 |
---|---|
[파이썬, Python] 백준 2869: 달팽이는 올라가고 싶다 (0) | 2022.12.15 |
[파이썬, Python] 백준 2292: 벌집 (0) | 2022.12.13 |
[파이썬, Python] 백준 1712: 손익분기점 (0) | 2022.12.12 |
[파이썬, Python] 백준 1065: 한수 (0) | 2022.12.11 |