문제 링크
https://www.acmicpc.net/problem/1193
문제
무한히 큰 배열에 다음과 같이 분수들이 적혀있다.

이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.
X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
출력
첫째 줄에 분수를 출력한다.
예제
입력
1
출력
1/1
입력
5
출력
2/2
정답 및 풀이
규칙
- 대각선 그룹
- 1번째 대각선:
1/1(1개) - 2번째 대각선:
1/2, 2/1(2개) - 3번째 대각선:
3/1, 2/2, 1/3(3개) - 4번째 대각선:
1/4, 2/3, 3/2, 4/1(4개)
- 1번째 대각선:
- n 이 홀수냐 짝수냐에 따라 분수의 숫자가 달라짐
- 홀수 대각선: 분자가 큰 것부터 시작 (ex. 3/1 → 2/2 → 1/3)
- 짝수 대각선: 분모가 큰 것부터 시작 (ex. 1/4 → 2/3 → 3/2 → 4/1)
코드
n = int(input())
line = 1
while n > line :
n -= line
line += 1
if line % 2 == 0:
print(f"{n}/{line-n+1}")
else:
print(f"{line-n+1}/{n}")
- n = int(input())
- 몇 번째 분수를 찾을지 입력
- line = 1
- 현재 대각선 번호
- while n > line :
- n 이 현재 대각선 크기보다 크면
- n -= line
- n 에서 현재 대각선에 있는 분수 개수를 빼줌
- line += 1
- 다음 대각선으로 이동
- if line % 2 == 0:
- 대각선 번호가 짝수일 때
- 분모는 커지고, 분자는 작아짐
'백준' 카테고리의 다른 글
| [백준] 5086 : 배수와 약수 (Python/파이썬) (0) | 2025.10.12 |
|---|---|
| [백준] 2869 : 달팽이는 올라가고 싶다 (Python/파이썬) (0) | 2025.10.12 |
| [백준] 2292 : 벌집 (Python/파이썬) (0) | 2025.10.12 |
| [백준] 2903 : 중앙 이동 알고리즘 (Python/파이썬) (0) | 2025.10.12 |
| [백준] 2720 : 세탁소 사장 동혁 (Python/파이썬) (0) | 2025.10.10 |