> 알고리즘 문제 풀이/BOJ51 17224-APC는 왜 서브태스크가 되었을까? (python, 파이썬) 1번: 내가 작성한 코드 (sorted 이용) n, l, k = map(int, input().split()) problems = [] for _ in range(n): easy, hard = map(int, input().split()) problems.append((easy, hard)) problems = sorted(problems, key=lambda x: x[1]) solved = 0 total = 0 for problem in problems: if solved >= k : break if problem[0] 2020. 10. 15. 16165-걸그룹 마스터 준석이 (python, 파이썬) n, m = map(int, input().split()) teams = dict() for _ in range(n): team = input() member_num = int(input()) teams[team] = [input() for _ in range(member_num)] for _ in range(m): name = input() if int(input()) == 1: for team, members in teams.items(): if name in members: print(team) else: print('\n'.join(sorted(teams[name]))) - 놓친 포인트: - Dictionary의 Key, Value 각각의 역할을 서로 다른 딕셔너리로 나누어 쓸 수 있다! - 여기.. 2020. 10. 15. 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. 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음