백준

백준 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}")