머리말
문제 링크
이 문제를 선택한 이유
- 구현 문제를 푸는데 나에게 맞는 난이도를 조절하기 위해 평소보다 약간 느슨한 난이도의 문제를 골랐다.
- 스터디를 새로 만들었는데, 팀원이 알고리즘 문제가 익숙하지 않아서 같이 풀어 보기 위해서 너무 쉽지도, 어렵지도 않은 문제를 찾다 보니 선택하게 되었다.
풀이
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)
꼬리말
구현 문제는 아이디어 싸움
- 아이디어를 구하는데 직접 예시를 그려 보는 게 많은 도움이 되었다!
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준] (Python) A와 B (0) | 2023.05.26 |
---|---|
[백준] (Python) 7568번: 덩치 (0) | 2023.05.24 |
[백준] (Swift) 20546번 기적의 매매법 (0) | 2023.05.19 |
[백준] (Swift/Python) 1213번: 펠린드롬 만들기 (0) | 2023.05.16 |
[백준] (Swift) N과 M (2) (0) | 2023.04.30 |
댓글