728x90
- 문제에서 나열된 분수들이 지그재그 순서로 차례대로 1번, 2번, 3번,4번,... 분수라고 하였고, 첫 줄에 x(1<=x<=10,000,000)이 주어진다 라고 한다.
- 문제에서 나온 순서를 토대로 배열을 만들면
1/1
1/2, 2/1
3/1, 2/2, 1/3
1/4, 2/3, 3/2, 4/1
5/1, 4/2, 3/3, 2/4, 1/5
...
위와 같이 계속 반복되어 질 것이다.
여기서 각 줄마다 특징을 알아보아야 한다!
- 짝수 라인 : 분모가 1씩 늘어나고 분자가 1씩 줄어든다.
- 홀수 라인 : 분자가 1씩 늘어나고 분모가 1씩 줄어든다.
- 이제 규칙(특징)을 찾았으니까 몇번째 줄에 몇번째 위치의 분수가 무엇인지를 알아내야 한다. while num > line: num -= line line += 1 while문의 loop를 사용해 몇번째 줄이고 몇번째 위치인지를 알아 낼 수 있다..
이제는 짝수일 경우와 홀수일 경우에 나눠서 코드를 구성해야한다.
# 짝수일경우 if line % 2 == 0: a = num b = line - num + 1 # 홀수일경우 elif line % 2 == 1: a = line - num + 1 b = num print(f'{a}/{b}') |
- 짝수 라인은 1씩 분모가 늘고 분자가 줄고
- 홀수 라인은 1씩 분모가 줄고 분자가 늘고
- 이를 활용해서 코드를 구성했다.
line - num + 1 이 코드는 대각선에서 분수의 위치에 따라서 분자 또는 분모를 계산하기 위해 사용된 식으로, 이 값이 a, b냐에 따라서 분자와 분모를 결정하게 되는 것이다.
# 전체코드 num = int(input()) line = 1 while num > line: num -= line line += 1 # 짝수일경우 if line % 2 == 0: a = num b = line - num + 1 # 홀수일경우 elif line % 2 == 1: a = line - num + 1 b = num print(f'{a}/{b}') |
728x90
'코딩테스트' 카테고리의 다른 글
백준 2869 : 달팽이는 올라가고 싶다. (1) | 2024.09.26 |
---|---|
백준 1062번 가르침 (0) | 2024.09.24 |
백준 2903번 중앙 이동 알고리즘 (0) | 2024.09.23 |
백준 2720번 세탁소 사장 동혁 문제 풀이 (0) | 2024.09.20 |
백준 2745번 진법변환문제 (0) | 2024.09.19 |