1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
이전 풀이
https://dmaolon00.tistory.com/16
[백준_python] 벌집, 분수찾기 || 2292, 1193
1. 벌집 www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호
dmaolon00.tistory.com
![](https://blog.kakaocdn.net/dn/bePp41/btq9e6kiV0H/FrYghcaKHV3pK0pzTT97j0/img.png)
a = int(input()) # 입력 받은 수
cnt = 0
cross = 1
while True:
b = a - cnt # 새 대각선에서 입력받은 수가 몇 번째인지 확인
cnt += cross # 총 개수
if a <= cnt: # 총 개수보다 입력받은 수가 작다면, 해당 대각선 중에 위치함을 의미
if cross % 2 == 1:
x = cross
y = 1
for _ in range(b - 1):
x -= 1
y += 1
elif cross % 2 == 0:
x = 1
y = cross
for _ in range(b - 1):
x += 1
y -= 1
print(x, end="/")
print(y)
break
cross += 1
해보다가 좀 안되서 다른 분들 코드 스을쩍 봤다,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
이렇게 입력 받을 수에서 직전 대각선까지의 수를 빼주어 현재 대각선에서 어느 위치에 있는지를 파악해준 후, 분모와 분자를 구해주었다.
그리고 이전 풀이를 살펴보니 굳이 직전 대각선까지의 수를 구해줄 필요가 없었다는 것을 알게 되었다.
그냥 지금 대각선까지의 수에서 입력받은 수를 구해주고 분모 분자를 구해줄 수도 있었다..ㅎㅎㅎ
a = int(input())
cross = cnt = 1
while a > cnt:
cross += 1
cnt += cross
gap = cnt - a
if cross % 2 == 0:
x = cross - gap
y = gap + 1
elif cross % 2 == 1:
x = gap + 1
y = cross - gap
print(x, end="/")
print(y)
참고한 사이트!)
https://st-lab.tistory.com/74
[백준] 1193번 : 분수찾기 - JAVA [자바]
https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 문제 분수를 찾는 것 자체는 그렇게 어려운 문제는 아니다. 다만 순서에 유의하여야 한..
st-lab.tistory.com