[BOJ/백준] 1193번 분수 찾기 (python)

ubin·2023년 7월 24일

백준 문제 풀이

목록 보기
5/9
post-thumbnail

🖇️ 문제

📝 코드 계획

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이 된다. 
profile
프론트엔드 개발자가 되고싶은 코린이⌨️

0개의 댓글