전체 글96 10813 ## 10813 공 바꾸기n, m = input().split()n = int(n) # 바구니 최대 갯수m = int(m) # 교환 횟수lst = [i+1 for i in range(n)] # 바구니 공 번호 리스트lst_swtch = list() # 바꿀 대상 저장 리스트for m in range (1, m+1): ## 교환 행위 m번 반복 i, j = input().split() i = int(i) j = int(j) lst_swtch.append(lst[i-1]) lst_swtch.append(lst[j-1]) lst[j-1] = lst_swtch[0] ## j번째 바구니는 i번째 바구니 값으로 변경 lst[i-1] = lst_swtch[1] ## i번째 바구니는 j번째 바구니 값으.. 2024. 6. 24. 09:26 10810 ## 10810 공 넣기n, m = input().split()n = int(n) # 최종 출력할 바구니 최대 번호m = int(m) # 반복 횟수lst = [0 for i in range(n)] # 최종 출력할 바구니까지의 공 저장 리스트...0으로 초기화for x in range(1, m+1): i_x, j_x, k_x = input().split() i_x = int(i_x) j_x = int(j_x) k_x = int(k_x) #lst[i_x-1:j_x+1] = [k_x] ## 이렇게 하니까 원소값 1개만 들어감.. 반복문으로 처리해야함 for y in range (i_x-1, j_x): lst[y] = k_xprint(*lst) 2024. 6. 23. 22:37 10871 ## 10871 x보다 작은 수n, x = input().split()n = int(n)x = int(x)a = input().split()a = map(int, a)lst = []for i in a: if i 2024. 6. 23. 17:53 10807 숫자 갯수를 제한해서 받는 문법은 검색했을 때 없는 걸로 나오는데..정확한 답인지 모르겠다 ## 10807 개수 세기n = input()lst = input().split()num = input()cnt = 0for i in lst: if num == i: cnt = cnt + 1print(cnt) 2024. 6. 23. 17:42 그림으로 개념을 이해하는 알고리즘 - Ch 07 CH 07 다익스트라 알고리즘 - 다익스트라 알고리즘 : 구간별 가중치가 있는 그래프에서 전체 가중치의 합이 가장 적은 구간 > 방향성 비순환 그래프(DAG) 또는 가중치가 양의 값인 사이클을 보유할 때만 적용 > 음의 가중치를 가진 그래프의 최단 경로 → 벨만-포드 알고리즘 (매 단계마다 모든 간선을 확인) - 사이클 : 어떤 쟁점에서 출발해서 한 바퀴 돌아 같은 쟁점에서 끝나는 경로 graph = {}graph["you"] = ["alice", "bob", "claire"]# 간선의 가중치graph["start"] = {}graph["a"] = {}graph["b"] = {}graph["fin"] = {}graph["start"]["a"] = 6graph["start"]["b"] = 2graph.. 2024. 6. 23. 16:16 그림으로 개념을 이해하는 알고리즘 - Ch 06 CH 06. 너비 우선 탐색 - 너비 우선 탐색 : 두 항목 간 최단 경로- 그래프 : 정점과 간선으로 이루어짐 > 바로 이어진 정점은 이웃 > 그래프 종류 : 방향, 무방향 > 키/값 쌍을 넣을 때 순서는 중요하지 않음 (해시테이블은 순서를 가지지 않으므로) > 최소 실행시간 : O(사람의 수 + 간선의 수) graph = {}graph["you"] = ["alice", "bob", "claire"]graph["bob"] = ["anuj", "peggy"]graph["alice"] = ["peggy"]graph["claire"] = ["thom", "jonny"]graph["anuj"] = []graph["peggy"] = []graph["thom"] = []graph["jonny"] =.. 2024. 6. 23. 15:45 그림으로 개념을 이해하는 알고리즘 - Ch 05 CH 05. 해시 테이블 - 해시 함수 : 문자열을 받아 숫자(인덱스)를 반환하는 함수 = 문자열에 숫자를 할당- 해시 테이블 (=딕셔너리=연관배열) : 해시 함수 + 배열, 키와 값으로 구성 최악의 경우 O(n) 최선의 경우 O(1) book = dict()book["apple"] = 0.67book["milk"] = 1.49book["avocado"] = 1.49print(book)print(book["avocado"]) - 해시 테이블 사용 예1. 조회 시 (전화번호부, DNS 확인 작업)phone_book = {} ## dict()phone_book["jenny"] = 8675309phone_book["emergency"] = 911print(phone_book["jenny"]) 2. 중복 방.. 2024. 6. 21. 22:35 2480 그렇게 맘에 들지는 않는 풀이.. 더 좋은 방법이 있을듯 하다## 2480 주사위 세개x, y, z = input().split()x = int(x)y = int(y)z = int(z)if x == y and y == z: ## 같은 눈 3개 나올 때 prize = x*1000 + 10000elif x == y or y == z or x == z: ## 같은 눈 2개 나올 때 lst = [] lst.append(x) lst.append(y) lst.append(z) cnt = {} for i in lst: if i in cnt : cnt[i] = cnt[i] + 1 cnt_fin = i else: cnt[i] = 1 prize = c.. 2024. 6. 21. 19:13 그림으로 개념을 이해하는 알고리즘 - Ch 04 CH 04. 퀵 정렬 - 분할 정복 전략① 여러 작은 단계로 분할② 작은 단계 해결 # 분할 정복def sum(arr): total = 0 for x in arr: total += x return totalprint(sum([1, 2, 3, 4])) ** 유클리드 호제법 : 최대공약수 찾기 알고리즘https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/the-euclidean-algorithm - 퀵 정렬 : 기준 원소를 기준으로 모든 원소를 기준 원소보다 큰지 작은지 분류 > 하위 배열이 정렬된 경우 : 왼쪽 배열 + 기준 원소 + 오른쪽 배열 > 하위 배열이 정렬되지 않은 경우 : 왼쪽, 오.. 2024. 6. 21. 17:58 이전 1 2 3 4 5 6 7 8 ··· 11 다음