코딩/백준

[백준] 1193번 분수찾기 파이썬 풀이 코딩테스트 연습 기본 수학1 브론즈1

thisisjade 2022. 1. 6. 22:37
728x90

문제

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

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번째 분수를 구하는 프로그램을 작성하시오.

 

입력

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

 

출력

첫째 줄에 분수를 출력한다.

 

예제 입력 1

1

 

예제 출력 1

1/1

 

예제 입력 2

2

 

예제 출력 2

1/2

 

예제 입력 3

3

 

예제 출력 3

2/1

 

예제 입력 4

4

 

예제 출력 4

3/1

 

예제 입력 5

5

 

예제 출력 5

2/2

 

예제 입력 6

6

 

예제 출력 6

1/3

 

예제 입력 7

7

 

예제 출력 7

1/4

 

예제 입력 8

8

 

예제 출력 8

2/3

 

예제 입력 9

9

 

예제 출력 9

3/2

 

예제 입력 10

14

 

예제 출력 10

2/4

 

문제가 너무 난해하더라고요 처음풀어보는 문제라서 시간이 좀 걸렸습니다!

 

x = int(input())

num = 0
num_count = 0

while num_count < x:
    num += 1
    num_count += num

num_count -= num

if num % 2 == 0:
    i = x - num_count
    j = num - i + 1
else:
    i = num - (x - num_count) + 1
    j = x - num_count

print(f"{i}/{j}")

while문은 1, 2, 3으로 늘어가는 num과 1, 3, 6으로 늘어나는 num_count를 구해줍니다.

 

if문에서 i, j를 구해줘서 출력을 시켜주는 방식으로 진행하였습니다.

 

이런 방식으로 푸는 문제를 많이 풀어야겠어요 처음에 감잡기가 너무 어려웠습니다.

728x90