Check Point !
( 해당사항 ✓체크 )
막힘 없이 수월하게 풀린 문제인가?
1시간이내로 풀렸던 문제인가? ✅
1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
시간을 써도 도무지 풀 수 없는 문제인가?
솔루션을 찾아봤는가? ✅
난이도 체감
최상
상
중
하 ✅
<이해도>
완벽히 이해
다소 헷갈리는 부분들이 있음 ✅
이해 못함
https://hongcoding.tistory.com/33
https://www.acmicpc.net/problem/1193
n = int(input())
line = 0
end = 0 # 인덱스 끝값
while n > end:
line += 1
end += line
diff = end - n
if line % 2 == 0:
top = line - diff
bot = diff + 1
else:
top = diff + 1
bot = line - diff
print("{}/{}" .format(top,bot))
문제를 풀때 해결방식이 떠오르지않았다. 규칙은 라인마다 갯수가 동일한것 정도였다.
홀수와 짝수 line을 구별해서 해당 짝수라인과 홀수라인을 구별하여 접근하였다
짝수라인은 분자인 Top이 오름차순으로 1씩 증가하고 분모dls Bot이 내림차순으로 1씩 감소한다.
홀수라인은 당연히 그 반대였다.
end는 각라인마다 인덱스값 총 몇개가 있는지 알기 위함이고,
ex ) 첫번째라인은 1개 두번째라인은 3개 세번째라인은 6개
diff은 end(인덱스값)에서 -n을 통해 몇번재 위치를 알기 위함이다.
이후 각 짝수와 홀수를 가정하여
짝수는
각 분자는 오름차순, 라인에서 - diff 을 통하여 각출하고,
분모는 diff+1 (0이 없음)을 한다.
홀수는 그반대이다.
다만, 저 수식이 생각이 나기가 어렵다.
diff, 즉 end - n
ex) line이 두번째 값
line - ( end - n )을 통해
end 는 고정이고 n은 값이 2,3이 나올 수 있다면, 총값이 오름차순으로 증가하기때문에
분자인 Top에다가 넣었는것 까진 이해한다.
하지만 어떻게 저 수식을 상기했는지는 잘 모르겠다... (단순히 외우긴 싫고)
누가 알면 댓글한번만 부탁...드립니다.