수식이 나오지 않는다면 새로고침(F5)을 해주세요
모바일은 수식이 나오지 않습니다.
📌 문제
📌 풀이
머리가 아프다... 쉬운 난이도 일텐데 ㅜㅜ
우선 분모랑 분자를 따로 보고, 반복 패턴을 확인하면 각각 아래와 같다.
분자 : [1], [1,2], [1,2,3], [1,2,3,4] ...
분모 : [1], [2,1], [3,2,1], [4,3,2,1] ...
먼저 여기서 힌트를 얻기.. 각 리스트의 길이(M)와 1~M의 요소가 리스트에 들어있다는 점. 분모와 분자는 순서차이일 뿐.
중요한 점은 그럼 입력을 받았을 때 몇 번째 리스트에 있는 지를 보는게 포인트.
위 패턴과 순서도 비교해보면?
분자 : [1], [1,2], [3,2,1], [1,2,3,4] ...
분모 : [1], [2,1], [1,2,3], [4,3,2,1] ...
입력 패턴 : [1], [2,3], [4,5,6], [7,8,9,10] ...
입력 패턴을 볼 때, 만약 입력을 9로 받았다? 리스트 길이인 값을 순서대로 뺴면..
ㄱ. 9-1 = 8
ㄴ. 8-2 = 6
ㄷ. 6-3 = 3
ㄹ. 3-4 = -1
그럼 5는?
ㄱ. 5-1 = 4
ㄴ. 4-2 = 2
ㄷ. 2-3 = -1
그럼 8은...
ㄱ. 8-1 = 7
ㄴ.7-2 = 5
ㄷ. 5-3 = 2
ㄹ. 2-4 = -2
어느순간 0보다 작거나 같게되고 이 때의 반복횟수가 곧 입력이 몇 번째 패턴 리스트에 속하는지를 나타낸다. 애초에 이걸 생각하는데 오래걸렸다.
같은 리스트에 있는 8과 9를 보면 각각 -2랑 -1이다 5는 -1이고. 그러니까 -(리스트 길이) ~ 0으로 자리를 생각하면 되겠네.
먼저 분자를 보면? 리스트 길이가 홀수이면 값이 점점 작아지고 짝수면 값이 점점 커진다. 이걸 if문을 이용해서
리스트 길이가 짝수면?? 뺀 값 + 리스트 길이가 분모이고, 분자는 1 - 뺀 값하면된다. 홀수의 경우 반대로
말이 길었는데 코드로 보면 간단하다.
N = int(input())
line = 1
while N > 0:
N -= line
line += 1
line -= 1
if line%2 == 0:
print(f'{N+line}/{1 - N}')
else:
print(f'{1-N}/{N+line}')
'🐍 Python > 백준' 카테고리의 다른 글
[백준 2720번. 파이썬] 세탁소 사장 동혁 (0) | 2024.03.25 |
---|---|
[백준 2563번. 파이썬] 색종이 (0) | 2024.03.22 |
[백준 10798번. 파이썬] 세로읽기 (1) | 2024.03.22 |
[백준 2738번. 파이썬] 행렬 덧셈 (0) | 2024.03.22 |
[백준 25206번. 파이썬] 너의 평점은 (0) | 2024.03.21 |