본문 바로가기
코딩 테스트/백준

[백준] (Python) 1193번: 분수찾기

by Dev.Andy 2023. 5. 22.

머리말

문제 링크

1193번: 분수찾기

이 문제를 선택한 이유

  • 구현 문제를 푸는데 나에게 맞는 난이도를 조절하기 위해 평소보다 약간 느슨한 난이도의 문제를 골랐다.
  • 스터디를 새로 만들었는데, 팀원이 알고리즘 문제가 익숙하지 않아서 같이 풀어 보기 위해서 너무 쉽지도, 어렵지도 않은 문제를 찾다 보니 선택하게 되었다.

 

풀이

1. 직접 예시를 입력해 보기

아래처럼 직접 순서를 써 보았다.


  
"""
row x numer/denom
1 1 1/1
2 2 3 1/2 2/1
3 4 5 6 3/1 2/2 1/3
4 7 8 9 10 1/4 2/3 3/2 4/1
5 11 12 13 14 15 5/1 4/2 3/3 2/4 1/5
"""
"""
8은 4번 줄의 2번째이다 row
8 - 1 = 7 1
8 - 1 - 2 = 5 2
8 - 1 - 2 - 3 = 2 3
"""

2. 예시를 찾아 보기

그 결과 다음과 같은 규칙을 갖고 있다.

  • 홀수 번째 줄의 분수는, 분모가 그 줄의 순서를, 분자는 개수 - 순서 + 1를 나타낸다.
  • 짝수 번째 줄의 분수는, 분모/분자가 위와 반대이다.

 

코드


  
# 1193번: 분수찾기
# 실버 5
# <https://www.acmicpc.net/problem/1193>
# import sys
# sys.stdin = open("input.txt", "r")
# input = sys.stdin.readline
x = int(input())
row = 1
result = ""
while x > row:
x -= row
row += 1
if row % 2 == 1:
numer = row - x + 1 # 분자
denom = x # 분모
else:
numer = x
denom = row - x + 1
result = f"{numer}/{denom}"
print(result)

 

꼬리말

구현 문제는 아이디어 싸움

  • 아이디어를 구하는데 직접 예시를 그려 보는 게 많은 도움이 되었다!

댓글