https://www.acmicpc.net/problem/1193
일정한 패턴을 찾아 해결하는 문제이다.
처음에 문제 이해도 오래걸리고....
그림 그리면서 패턴찾기도 꽤나 오래렸다ㅠㅠ
1. 몇번째 대각선인지에 따라 그룹을 지을 수 있고
2. 홀,짝인지에 따라 분모 분자가 증가,감소패턴이 달라진다.
3. 그룹 내에서 몇번째 값인지 찾기까지하면 답을 구할 수 있다.
n = int(input())
line = 1
# 1. 몇 번째 라인인지 찾기
while n>0 and n>line:
n-=line
if n<=0:
break
line+=1
# 2. 라인 홀짝여부에 따른 분기 (a/b)
if line%2==0:
a=n
b=line-n+1
else:
a=line-n+1
b=n
print(f'{a}/{b}')
🔧 Refectoring
n이 몇번째 대각선에 있는지 찾기위해서, 1부터 증가하면서 뺄셈을 해보는데
while문 조건을 빼야할 값인 line보다 n이 크다고 바꿔주면, 깔끔하게 코드를 바꿀 수 있다.
n = int(input())
line = 1
# 1. 몇 번째 라인인지 찾기
while n>line:
n-=line
line+=1
# 2. 라인 홀짝여부에 따른 분기 (a/b)
if line%2==0:
a=n
b=line-n+1
else:
a=line-n+1
b=n
print(f'{a}/{b}')
'백준' 카테고리의 다른 글
[백준-python] 알고리즘의 수행 시간 2,4,6번 (0) | 2024.05.31 |
---|---|
[백준-Python] 서로 다른 부분 문자열의 개수 : 11478번 (0) | 2024.05.30 |
[백준-Python] 단어 공부 : 1157번 (0) | 2024.05.30 |
[백준-Python] 올림픽 : 8979번 (0) | 2024.05.29 |
[백준-Python] 주사위 세개 : 2480번 (0) | 2024.05.29 |