문제 : https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
Sol )
- 입력받은 n이 몇 번째 대각선에 포함되는지 찾은 후 대각선의 가로 혹은 세로 시작점 (a/1 또는 1/a 형태)의 순서와 n 번째 순서까지의 차이를 계산해서 정답 출력
- 대각선 : 첫번째 선 ( 1/1 ), 두번째 선 (1/2, 2/1), 세번째 선 (3/1, 2/2, 1/3)
- 첫 번째 선에서 두 번째 선으로 이동할 때 가로 순서 증가량은 1, 세로 증가량은 2 이다.
- 두 번째 선에서 세 번째 선으로 이동할 때 가로 순서 증가량은 4, 세로 증가량은 1 이다.
- 홀수번째 선(= x)에서 짝수번째 선으로 이동할 때 가로는 항상 1 증가, 세로는 2 + 4 * (x/2)의 몫 씩 증가
- 짝수번째 선(= x)에서 홀수번째 선으로 이동할 때 세로는 항상 1 증가, 가로는 4 * (x/2)의 몫 씩 증가
소스코드 )
n = int(input())
cnt = 1
diff = 4
r,c = 1,1
row_diff = 2
col_diff = 4
up = down = 1
while r<n and c<n and n!=1:
if cnt%2 != 0:
r += row_diff
c += 1
row_diff += 4
else:
r += 1
c += col_diff
col_diff += 4
cnt += 1
if r>c:
up = 1
down = cnt
while c != n:
down -= 1
up += 1
c += 1
elif c>r:
up = cnt
down = 1
while r != n:
down += 1
up -= 1
r += 1
print(f"{up}/{down}")
'Problem Solving > boj.kr (Python)' 카테고리의 다른 글
[BOJ / 파이썬] 10250 : ACM 호텔 (0) | 2022.07.11 |
---|---|
[BOJ / 파이썬] 2869 달팽이는 올라가고 싶다 (0) | 2022.07.11 |
[BOJ / 파이썬] 2292 : 벌집 (0) | 2022.03.13 |
[BOJ / 파이썬] 1712 : 손익분기점 (0) | 2022.03.12 |
[BOJ / 파이썬] 1316 : 그룹 단어 체커 (0) | 2022.02.26 |
댓글