본문 바로가기

BFS10

[프로그래머스] 양과 늑대(Python) https://programmers.co.kr/learn/courses/30/lessons/92343 코딩테스트 연습 - 양과 늑대 [0,0,1,1,1,0,1,0,1,0,1,1] [[0,1],[1,2],[1,4],[0,8],[8,7],[9,10],[9,11],[4,3],[6,5],[4,6],[8,9]] 5 [0,1,0,1,1,0,1,0,0,1,0] [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6],[3,7],[4,8],[6,9],[9,10]] 5 programmers.co.kr 쉽지 않았던 문제다. 풀면서 생겼던 문제는 현재 상태에서 갈 수 있는 노드를 찾는 과정에서 객체를 같이 참조하면서 무한루프를 돌았다. 그 부분을 어떻게 할지 고민했다. 알고리즘은 다음과 같다. 1. 루트 노드부터 .. 2022. 1. 28.
[프로그래머스] 블록 이동하기 (Python) https://programmers.co.kr/learn/courses/30/lessons/60063 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 programmers.co.kr 힘든 구현 문제다. 이게 맞나 싶으면서 그냥 구현했다. bfs로 풀었다. 나의 풀이 from collections import deque,defaultdict def solution(board): length = len(board) visited = defaultdict(int) visited[(0,0,0,1)] = 1 q = deque([(0,0,0,1,0)]) while q: x, y, .. 2021. 11. 18.
[프로그래머스] 아이템 줍기 (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/86052 코딩테스트 연습 - 빛의 경로 사이클 각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진 programmers.co.kr 각각의 위치에 대해서 모든 방향으로 방문했는지 체크하면서, 이동할 때에 규칙을 잘 설정해야 한다. 마지막에 오름차순으로 정렬하는걸 못 봐서 한참 헤맸다. 나의 풀이 from collections import deque def solution(grid): answer =[] len_x, len_y = len(grid),len(grid[.. 2021. 11. 7.
[프로그래머스] 전력망을 둘로 나누기 (Python) https://programmers.co.kr/learn/courses/30/lessons/86971 코딩테스트 연습 - 전력망을 둘로 나누기 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr 전선을 하나씩 끊어 보며 bfs로 풀었다. from collections import deque def solution(n,wires): answer = 101 for i in range(len(wires)): wire = wires[:i] + wires[i+1:] graph = [[] for _ in range(n+1)] visited = [False for _.. 2021. 11. 3.
[프로그래머스] 게임 맵 최단거리(Python) https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 전형적인 BFS 문제다 나의 풀이 from collections import deque def solution(maps): n,m = len(maps), len(maps[0]) visited = [[0]*m for _ in range(n)] visited[0][0]=True move = [(1,0),(-1,0.. 2021. 10. 31.
[프로그래머스] 단어 변환(Python) https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 나의 풀이 from collections import deque def check_one_word(word,begin): counting = 0 for w,b in zip(word,begin): if w != b: counting +=1 return True if counting ==1 else False def sol.. 2021. 10. 21.
[프로그래머스] 타겟 넘버 (Python) https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 참고 https://hkim-data.tistory.com/31?category=1016184 #2-3 Python 코딩테스트 그리디 알고리즘 , DFS & BFS https://www.youtube.com/watch?v=2zjoKjt97vQ&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0d.. 2021. 10. 21.
#2-3 Python 코딩테스트 그리디 알고리즘 , DFS & BFS https://www.youtube.com/watch?v=2zjoKjt97vQ&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=2 https://www.youtube.com/watch?v=7C9RgOcvkvo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=3 이 포스트는 위의 영상을 보고 제가 필요하다고 생각된 부분을 정리한 포스팅입니다. 그리디 알고리즘 : 현재 상태에서 지금 당장 좋은 것만 고르는 방법-> 이 방법을 이용했을 때 최적의 해를 구할 수 있는지 검토하는 것이 필요함. 스택 , 큐 : - 스택은 선입 후출 형태 list를 그대로 사용한다. append, pop을 활용. - 큐는 선입선출 형태 from collections.. 2021. 10. 20.