🖇️ 문제

📝 코드 계획
1. n 번째 분수 입력
2. 몇 번째 줄에 몇 번인지 구하는 조건문
3. n 번째 분수 구하는 조건문
🔍 전체 코드
n = int(input()) #코드 계획 -1 ☑️
line = 1
while n>line: #코드 계획 -2 ☑️
n -= line
line += 1
if line%2 == 0: #코드 계획 -3 ☑️
x = n
y = line - n + 1
elif line%2 == 1:
x = line-n+1
y = n
print(x,'/',y, sep="")
🖍️ 코드 해설
먼저 문제에 나와있는 사진을 배열로 간단하게 나타낼 수 있다.
L1 1/1
L2 1/2 2/1
L3 3/1 2/2 1/3
L4 1/4 3/2 2/3 4/1
.
.
즉 n번째 배열에는 n개의 분수가 들어가있는걸 알 수 있고,
짝수 줄일 땐 분자가 오름차순이지만 홀수 줄일 땐 분자가 내림차순인것을 알 수 있다.
입력받은 n이 몇 번째 배열에 속해있는지 확인하기 위해 line변수를 1로 초기화하고,
n이 line보다 클 때까지 n에서 line만큼 빼주고 line은 +1하는 while문을 선언한다.
만약 n이 line과 같거나 작아지는 순간이 오면, 반복문은 끝이나며
이 때 line값은 몇 번째 줄인지, n값은 n번째인지를 의미하게 된다.
line을 2로 나누었을 때 나머지가 0이면 짝수 줄로 분자가 n이 되고, 분모가 line-n+1이 된다.
나머지가 1이면 홀수 줄이기 때문에 짝수 줄과 반대로 분자가 line-n+1이고 분모가 n이 된다.