[프로그래머스] 아이템 줍기 (Python)
https://programmers.co.kr/learn/courses/30/lessons/87694 코딩테스트 연습 - 아이템 줍기 [[1,1,7,4],[3,2,5,5],[4,3,6,9],[2,6,8,8]] 1 3 7 8 17 [[1,1,8,4],[2,2,4,9],[3,6,9,8],[6,3,7,7]] 9 7 6 1 11 [[2,2,5,5],[1,3,6,4],[3,1,4,6]] 1 4 6 3 10 programmers.co.kr 어려웠던 문제다. bfs로 풀었다. 1. 시작 지점에서부터 U, D, R, L 방향으로 하나씩 이동 2. 이동 후 조건에 맞는지 확인 - 좌표 범위를 넘어갔으면 continue - 방문 한 적이 있다면 continue - 주어진 직사각형들을 하나씩 순회하며 직사각형 좌표를 받는다..
2021. 11. 11.
[프로그래머스] 경주로 건설 (Python)
https://programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 어려웠다... bfs + dp로 풀어냈는데 계속 틀려서 확인해보니 board = [ [..
2021. 11. 10.
[프로그래머스] 합승 택시 요금 (Python)
https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 매 지점까지 같이 합승했다고 치고 그 지점에서 각자 목적지로 이동했을 경우에서 요금..
2021. 11. 10.
[프로그래머스] 보석 쇼핑 (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.