🔗 문제 링크
https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
처음 봤을 때는 문제가 굉장히 복잡해 보였는데 규칙을 찾고 나면 어렵지 않게 해결할 수 있는 문제인 듯하다! 이런 수학 + 구현 문제는 해결 방식을 떠올리는 게 제일 복잡한 것 같다 ㅇ0ㅇ
🔎 문제 풀이 & 작성 코드
이 문제에서는 위의 화살표를 따라가며 N번째 분수를 찾아내야 한다. 내가 생각한 이 문제의 규칙성은 이렇다. 초록색 화살표로 내려가는 것과 주황색 화살표를 따라 올라오면서 이동하기 때문에, 이 특징을 가지고 알고리즘을 작성하였다.
1/1부터 시작되는 주황선은 1,3,5,...번째인 홀수 라인들이라고 생각하고, 초록선을 따라가는 줄은 2,4,6,...번째의 짝수 라인이라고 가정했다. 우선적으로 몇 번째 선 위에 찾고자 하는 분수가 위치하는지를 찾았다. 홀수 라인이라면 (m,1) → (1, m)으로, 짝수 라인이라면 (1, m) → (m,1)으로 이동하는 규칙에 따라 분수를 찾아냈다. 말로 설명하려니까 어렵다..
import sys
N = int(sys.stdin.readline())
loc=0
cnt=0
while N > loc:
cnt+=1
loc+=cnt
move = loc - N
if cnt %2 == 0 : # 짝수라인
print(f"{cnt-move}/{1+move}")
else: # 홀수 라인
print(f"{1+move}/{cnt-move}")
🌍 깃허브 링크
실제 작성한 해당 정답 코드는 깃허브에도 저장해두었습니다.
dohyun-99 - Overview
dohyun-99 has 4 repositories available. Follow their code on GitHub.
github.com
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[백준/파이썬] 2609번: 최대공약수와 최소공배수 풀이 (0) | 2023.08.04 |
---|---|
[백준/파이썬] 3009: 네 번째 점 풀이 (0) | 2023.08.01 |
[백준/파이썬] 10809: 알파벳 찾기 풀이 (0) | 2023.08.01 |
[백준/파이썬] 11718: 그대로 출력하기 & 11719: 그대로 출력하기 2 풀이 (0) | 2023.07.31 |
[백준/파이썬] 10815. 숫자 카드 풀이 (0) | 2023.07.27 |