[프로그래머스] 보석 쇼핑 (Python)
https://programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 투 포인터 문제다. 처음에 set을 이용해서 각각의 경우마다 set(gems[start : end +1]) == set(gems) 이렇게 풀었었는데, 효율성 테스트에서 시간 초과가 났다. 시간초과가 날 때 입력 값의 범위를 고려해서 알고리즘을 변경하거나 set or dict를 활용할 생각을 해야겠다. 나의 풀이 def solution(gems): start, end, answer = 0, 0, [0, len(g..
2021. 11. 9.
[프로그래머스] 순위 (Python)
https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 1. 승패 결과로부터 승자와 패자 정보를 그래프에 담는다. 2. A에게 이긴 선수는 A가 이긴 선수도 이긴다. 3. A에게 진 선수는 A를 이긴 선수에게도 진다. 4. A와 승패가 결정된 사람의 수가 전체 선수 -1 이면 answer에 추가해줌 나의 풀이 def solution(n, results): answer = 0 graph = [[set() for _ in range(2)] for _ in range(n+1)] for result in results: # 승자 ..
2021. 11. 8.
[프로그래머스] 가장 먼 노드 (Python)
https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 다익스트라 알고리즘으로 구현해서 풀면 된다. 무방향 그래프이기 때문에 양쪽 방향으로 이동 가능한 것을 설정해줘야 함. 나의 풀이 from collections import deque def solution(n,vertex): graph = [[] for _ in range(n+1)] visited = [0 for _ in range(n+1)] for ver in vertex: graph[ver[0]].append(ver[1]) gr..
2021. 11. 8.
[프로그래머스] 행렬의 곱셈 (Python)
https://programmers.co.kr/learn/courses/30/lessons/12949 코딩테스트 연습 - 행렬의 곱셈 [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] programmers.co.kr 행렬의 곱셈을 구현하면 됨, 뭔가 손 가는 대로 해서 이상한 감이 있는 것 같다. 나의 풀이 def solution(arr1, arr2): arr3 = [[0]*len(arr2) for _ in range(len(arr2[0]))] for i in range(len(arr3)): for j in range(len(arr3[0])): arr3[i]..
2021. 11. 7.