
지그재그의 순서를 문제 설명을 통해서 이해하는 것이 다소 까다로워서, 아래처럼 내가 표로 순서를 적어보았다.
1 | 2 | 6 | 7 | 15 | 16 |
3 | 5 | 8 | 14 | 17 | |
4 | 9 | 13 | 18 | ||
10 | 12 | 19 | |||
11 | 20 | ||||
21 |
1번부터 시작해서 대각선으로 색칠하듯이 내려가는 것이 특징이다.
이를 토대로 순서를 고려하여 구분된 배열을 만들어보자면 다음과 같다.
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씩 줄어듦
각 해마다 숫자가 증가하고 있고, n 번째 줄에는 n개의 분수가 존재한다.
num = int(input())
row = 1 # 첫 번째 줄부터 시작
while num > row :
num -= row
row += 1
if row % 2 == 0:
a = num
b = row - num + 1
else:
a = row - num + 1
b = num
print(f'{a}/{b}')
1. while 루프
num이 현재 행에 있는 모든 분수들보다 크다면, num을 그 행에 있는 분수의 개수인 row 만큼 빼주고, 다음 줄로 넘어간다.
예를 들어 num이 7이라면, 첫 번째 행에 있는 분수(1개)를 제외하면 num=6, 두 번째 줄에 있는 분수를 제외하면 num = 4, 세 번째 줄에 있는 분수를 제외하면 num=1, 따라서 네 번째 줄에서 num=1, row=4가 된다.
2. if 문
num은 현재 줄에서 몇 번째 분수인지를 나타내며, 앞선 예시를 다시 가져오자면 num=1이므로 네 번째 행에서 첫 번째 분수인 것이다. 그러나 짝수 행과 홀수 행에서는 분수의 나열 방식이 다르므로 이를 충족하는 조건을 추가해야 함
1) 짝수 번째 행
- 분자가 1씩 늘어남 & 분모가 1씩 줄어듦 => 오른쪽으로 갈수록 분수 값이 커짐
- row - num + 1은 짝수 줄에서 분모의 값이 처음엔 row에서 시작하여 1씩 작아지는 패턴을 만듦
앞선 예시를 이어오면 현재 num=1, row=4이므로 a = 1, b = 4 - 1 + 1 = 4로서 1/4 이다.
2) 홀수 번째 행
- 분자가 1씩 줄어듦 & 분모가 1씩 늘어남 => 오른쪽으로 갈수록 분수 값이 작아짐
분수 형태로 출력하기 위해 마지막엔 {a}/{b}를 해주면 완료!

'Python' 카테고리의 다른 글
[백준/Python] 11074 : 동전 0 (0) | 2024.11.02 |
---|---|
[백준/Python] 9461 : 파도반 수열 (0) | 2024.10.05 |
[백준/Python] 2346 : 풍선 터뜨리기 (0) | 2024.10.05 |
[백준/Python] 17626 : Four Squares (0) | 2024.09.29 |
[백준/Python] 1051 : 숫자 정사각형 (0) | 2024.09.29 |

지그재그의 순서를 문제 설명을 통해서 이해하는 것이 다소 까다로워서, 아래처럼 내가 표로 순서를 적어보았다.
1 | 2 | 6 | 7 | 15 | 16 |
3 | 5 | 8 | 14 | 17 | |
4 | 9 | 13 | 18 | ||
10 | 12 | 19 | |||
11 | 20 | ||||
21 |
1번부터 시작해서 대각선으로 색칠하듯이 내려가는 것이 특징이다.
이를 토대로 순서를 고려하여 구분된 배열을 만들어보자면 다음과 같다.
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씩 줄어듦
각 해마다 숫자가 증가하고 있고, n 번째 줄에는 n개의 분수가 존재한다.
num = int(input())
row = 1 # 첫 번째 줄부터 시작
while num > row :
num -= row
row += 1
if row % 2 == 0:
a = num
b = row - num + 1
else:
a = row - num + 1
b = num
print(f'{a}/{b}')
1. while 루프
num이 현재 행에 있는 모든 분수들보다 크다면, num을 그 행에 있는 분수의 개수인 row 만큼 빼주고, 다음 줄로 넘어간다.
예를 들어 num이 7이라면, 첫 번째 행에 있는 분수(1개)를 제외하면 num=6, 두 번째 줄에 있는 분수를 제외하면 num = 4, 세 번째 줄에 있는 분수를 제외하면 num=1, 따라서 네 번째 줄에서 num=1, row=4가 된다.
2. if 문
num은 현재 줄에서 몇 번째 분수인지를 나타내며, 앞선 예시를 다시 가져오자면 num=1이므로 네 번째 행에서 첫 번째 분수인 것이다. 그러나 짝수 행과 홀수 행에서는 분수의 나열 방식이 다르므로 이를 충족하는 조건을 추가해야 함
1) 짝수 번째 행
- 분자가 1씩 늘어남 & 분모가 1씩 줄어듦 => 오른쪽으로 갈수록 분수 값이 커짐
- row - num + 1은 짝수 줄에서 분모의 값이 처음엔 row에서 시작하여 1씩 작아지는 패턴을 만듦
앞선 예시를 이어오면 현재 num=1, row=4이므로 a = 1, b = 4 - 1 + 1 = 4로서 1/4 이다.
2) 홀수 번째 행
- 분자가 1씩 줄어듦 & 분모가 1씩 늘어남 => 오른쪽으로 갈수록 분수 값이 작아짐
분수 형태로 출력하기 위해 마지막엔 {a}/{b}를 해주면 완료!

'Python' 카테고리의 다른 글
[백준/Python] 11074 : 동전 0 (0) | 2024.11.02 |
---|---|
[백준/Python] 9461 : 파도반 수열 (0) | 2024.10.05 |
[백준/Python] 2346 : 풍선 터뜨리기 (0) | 2024.10.05 |
[백준/Python] 17626 : Four Squares (0) | 2024.09.29 |
[백준/Python] 1051 : 숫자 정사각형 (0) | 2024.09.29 |