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

[백준] (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)

 

꼬리말

구현 문제는 아이디어 싸움

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

댓글