Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 머신러닝
- 혼공챌린지
- 코딩테스트
- 알고리즘
- 에러해결방안
- 백준 #코딩테스트 #코테 #알고리즘
- TS
- js
- 혼공단
- 혼공머신
- CSS
- 혼자공부하는머신러닝
- 초기값 설정하기
- 리액트
- typeScript
- 구조분해할당
- axios
- 백준 #코딩테스트
- error맛집
- useEffect
- clipboardapi
- 딥러닝
- 혼자공부하는머신러닝딥러닝
- Redux
- REACT
- 타입스크립트
- styledcomonents
- 유니티 #게임개발
- reactmemo
- 백준
Archives
- Today
- Total
좌충우돌 개발자의 길
백준 알고리즘 | 1193번 (분수찾기) | 파이썬 본문
1193번 (분수찾기)
- 무한히 큰 배열에 다음과 같이 분수들이 적혀있다.
- 이와 같이 나열된 분수들을 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.
- X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.
num = int(input())
i = 1
answer = 0
if num == 1:
print(1, 1, sep="/")
else:
# 1줄->1개 2줄->2개 3줄->3개 ... n줄->n개 몇번째 줄인지 파악
while 1:
if i % 2 == 0:
a = (1+i)*(i//2)
if(a == num):
answer = i
break
elif(a > num):
answer = i
break
else:
i = i+1
elif (i % 2 == 1):
a = (1+i)*(i//2)+((i//2)+1)
if(a == num):
answer = i
break
elif(a > num):
answer = i
break
else:
i = i+1
# print(answer)
#해당 줄에 있는 모든 분수들 배열에 집어넣기
arr = []
k = 0
if(i % 2 == 0):
for j in range(1, i+1):
if(j == 1):
# print(i, "/", j)
arr.append([])
arr[k].append(j)
arr[k].append(i)
k += 1
else:
i -= 1
# print(i, "/", j)
arr.append([])
arr[k].append(j)
arr[k].append(i)
k += 1
else:
for j in range(1, i+1):
if(j == 1):
# print(j, "/", i)
arr.append([])
arr[k].append(i)
arr[k].append(j)
k += 1
else:
i -= 1
# print(j, "/", i)
arr.append([])
arr[k].append(i)
arr[k].append(j)
k += 1
# print(arr)
# print(answer)
# n줄의 몇번째에 위치했는지 파악해 출력하기
mk = answer-1
if(mk % 2 == 0):
num2 = (1+mk)*(mk//2)
total = num-num2-1
if(total >= 0):
print(arr[total][0], arr[total][1], sep='/')
elif (mk % 2 == 1):
num2 = (1+mk)*(mk//2)+((mk//2)+1)
total = num-num2-1
if(total >= 0):
print(arr[total][0], arr[total][1], sep='/')
새롭게 배운 것
- sep='/' 으로 출력시 나눠지게 할수 있음
- 다차원 리스트 생성 및 추가
arr=[]
arr.append([])
arr[k].append(i)
arr[k].append(j)
#==> [[1,2]]