백준
백준 1193번 어떻게 풀었나
kimbro6
2023. 1. 14. 00:01
이 문제는
이 문제를 이상한 방향으로 생각하다가, 제출도 하지 못하고 구글링 했다.
그 대신 완벽하게 이해하고 어떻게 풀어야 하는지 글을 쓴다.
어떻게 푸나
문제 해석하기
이 문제를 풀려면 일단, 대각선 방향으로 주어진 표를 봐야 된다.
그러면 i번째 대각선에는 i개의 분수가 있는게 보인다.
그러므로 i번째 대각선에는 i + (i-1) + (i-2) + ... + 1 이 제일 큰 X값이다.
이것을 이용하여 X가 몇번째 대각선에 있는지 구한다.
그리고 X가 홀수, 짝수 대각선 중 어디에 있는지에 따라서 X위치의 분수를 구하면 된다.
코드
X = int(input())
#X가 몇번째 대각선에 있는지 구한다.
t = 1
i = 1
while X > t:
i += 1
t += i
if i % 2 == 1: #홀수이면
#지금 t값은 i번째 줄에서 최대 X값임
#홀수줄에서 최대 X값은 오른쪽 위에있음
move = t-X
print(f"{move+1}/{i-move}")
else: #짝수이면
#지금 t값은 i번째 줄에서 최대 X값임
#짝수줄에서 최대 X값은 왼쪽 아래에 있음
move = t-X
print(f"{i-move}/{move+1}")