본문 바로가기

분류 전체보기161

1991-트리 순회 (python, 파이썬) - 핵심 포인트: - 재귀 함수 활용 - 방문과 출력은 다르다! - 추가 포인트: 중위 순회는 x축의 왼쪽부터 오른쪽 방향으로 그래프의 노드를 나열한 것과 순서가 같다 1번: 내가 작성한 코드 (재귀 함수 이용) n = int(input()) mygraph = dict() def preorder(graph, node): pre_lst.append(node) if graph[node][0] != '.': preorder(graph, graph[node][0]) if graph[node][1] != '.': preorder(graph, graph[node][1]) return pre_lst def inorder(graph, node): if graph[node][0] != '.': inorder(graph,.. 2020. 10. 15.
*1939-중량제한 (python, 파이썬) - 포인트: - 이동 가능한 중량: 최소 중량 ~ 최대 중량 사이에 있다 - 이동 가능한 중량을 찾기 위해서 이진 탐색을 사용한다 - 이진 탐색을 쓰는 이유: 제한된 시간 내에 최적의 값을 찾아야 하는 문제이기 때문이다. 이진 탐색의 시간 복잡도가 O(log n)이라는 점은 매우 중요한 포인트이다! 최적의 값을 찾도록 도와주는 게 이진 탐색이라는 것을 알았기 때문에 이제 중간 값(mid=현재 중량 값)을 찾아가며 적용시키면 된다! - 정답을 무조건 최대 중량으로 잡지 않는 이유: 먼저는 도착지점까지 갈 수 있는지를 고려해야 하는데(bfs), 이때 최대 중량을 싣는 것이 불가능할 수 있기 때문 그래서 경로상으로 문제없이 도착할 수 있는 최적의 중량을 탐색하는 것이 동반됨 (탐색이 중요!) - 이동 가능할 .. 2020. 10. 15.
*2110-공유기 설치 (python, 파이썬) - 어려운 문제였다. - 이진 탐색을 활용하는 문제였는데, 아직 이진 탐색을 구현하는 게 어색하고, 적용하는 방법도 어렵다. 문제를 제대로 소화하려면 반복 학습과 연습이 필요하겠다. import sys n, c = map(int, input().split()) arr = [] for _ in range(n): arr.append(int(sys.stdin.readline())) arr = sorted(arr) start = arr[1] - arr[0] end = arr[-1] - arr[0] result = 0 while start = value + mid: value = arr[i] count += 1 if count >= c: start = mid + 1 result = mid else: end = m.. 2020. 10. 15.
17389-보너스 점수 (python, 파이썬) n = int(input()) s = input() total, bonus = 0, 0 o, x = 'O', 'X' for i in range(n): if s[i] == o: total += (i+1) + bonus bonus += 1 else: bonus = 0 print(total) 2020. 10. 14.