백준 알고리즘 문제 풀이 [Python]

[백준/Python] 1193번 분수찾기 (기본수학1)

wlalsu_u 2023. 2. 23. 20:32

1193번 : 분수찾기 문제

 

 

무한히 큰 배열에 다음과 같이 분수들이 적혀있다.

1/1 1/2 1/3 1/4 1/5
2/1 2/2 2/3 2/4
3/1 3/2 3/3
4/1 4/2
5/1

이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로

1번, 2번, 3번, 4번, 5번, … 분수라고 하자.

 

X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.

 

 

 

https://www.acmicpc.net/problem/1193

 

1193번: 분수찾기

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

www.acmicpc.net

 

 


 

풀이 코드

 

x = int(input())
line = 1

while x > line:
    x -= line
    line += 1

if line % 2 == 0:
    a = x
    b = line - x + 1

else:
    a = line - x + 1
    b = x

print(a, "/", b, sep="")

 

 

+ 문제 풀이 Point 

분수들의 숫자가 지그재그 순서로 매겨지므로, 순서를 다음과 같이 나타낼 수 있음.
1번줄 : (1/1)
2번줄 : (1/2 , 2/1)
3번줄 : (3/1, 2/2, 1/3)

- n 번 줄은 n 개의 분수를 가지고 있음
- 홀수번째 줄에서는 분자가 오름차순, 짝수번째 줄에서는 분자가 내림차순

 

 

x = int(input())

 

 

- 첫째 줄에서 자연수를 입력받아, 변수 x 에 저장

 

- input() 은 한 줄의 문자열만 입력받을 수 있음

 

- 입력받은 문자열을 정수로 처리하기 위해 int() 함수를 사용

 

 

 

line = 1

 

 

- 입력받은 x 가 몇 번째 줄인지를 저장하는 변수 line

 

- 첫 번째 줄부터 시작하므로, 1로 초기화

 

 

 

while x > line:

 

 

- 입력받은 x 값이, 현재의 line 값보다 큰 경우 while 문을 반복

 

 

 

x -= line    /    line += 1

 

 

- n 번 줄은 n 개의 분수를 가지고 있음 

 

- 따라서, x 값이 line 값보다 작거나 같아질 때 까지, line 수를 1씩 증가하며 빼줌

 

 

 

여기까지 x 가 몇 번째 줄에 있는지를 구했으면, 
x 가 해당하는 줄에 몇 번째 순서에 있는지를 구해야 함.

이때, 홀수번째 줄에서는 분자가 오름차순, 짝수번째 줄에서는 분자가 내림차순

따라서 if 문으로 줄이 홀수일 때와 짝수일 때로 나누어야 함

 

 

 

if line % 2 == 0:

 

 

- 입력받은 x 가 있는 줄이 짝수 줄인 경우

 

 

 

a = x    /    b = line - x + 1

 

 

- 분자 값을 담는 변수 a : 앞서 line 을 모두 빼고 남은 나머지 수인, x 값과 동일

 

- 분모 값을 담는 변수 b : line 수에서 x 값을 뺀 후, 1을 더해주어야 함

 

 

 

else:

 

 

- 입력받은 x 가 있는 줄이 홀수 줄인 경우

 

 

 

a = line - x + 1    /   b = x

 

 

- 분자 값을 담는 변수 a : line 수에서 x 값을 뺀 후, 1을 더해주어야 함

 

- 분모 값을 담는 변수 b : 앞서 line 을 모두 빼고 남은 나머지 수인, x 값과 동일

 

 

 

print(a, "/", b, sep="")

 

 

- 분자 a 를 먼저 출력한 후, 분모 b 를 출력

 

- sep 은 구분자 역할로, print 문의 출력문들 사이에 sep 에 해당하는 내용을 출력

 

(옵션을 사용하지 않을 경우, default 값은 공백)

 

 

 

 

 

 

 

 

나동빈 '이것이 코딩 테스트다 with 파이썬' 책을 참고하여 작성하였습니다.

https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC