일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 트라이
- 이분탐색
- 우선순위큐
- 투 포인터
- 2021 KAKAO BLIND RECRUITMENT
- 프로그래머스
- 시뮬레이션
- 플로이드 와샬
- BFS
- 2019 KAKAO BLIND RECRUITMENT
- 2020 KAKAO BLIND RECRUITMENT
- 2018 KAKAO BLIND RECRUITMENT
- Spring
- 2020 카카오 인턴십
- 스택
- 로봇 청소기
- 비트마스킹
- GIT
- 최소 신장 트리
- 투포인터
- 플로이드와샬
- 구현
- 크루스칼
- 조합
- 파이썬
- 다익스트라
- SWEA
- 백준
- 백트래킹
- 브루트포스
- Today
- Total
목sssssss록BFS (37)
개발조아
문제 링크 : https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net 평범한 3차원 공간에서의 BFS이다. S에서 출발하여 E까지 가는데 걸리는 최단시간을 구하는 것이다. from sys import stdin from collections import deque input = stdin.readline dx = [-1,1,0,0,0,0] dy = [0,0,-1,1,0,0] dz = [0,0,0,0,-1,1] def solv(): while True: gl..

문제 링크 : https://www.acmicpc.net/problem/16985 16985번: Maaaaaaaaaze 첫째 줄부터 25줄에 걸쳐 판이 주어진다. 각 판은 5줄에 걸쳐 주어지며 각 줄에는 5개의 숫자가 빈칸을 사이에 두고 주어진다. 0은 참가자가 들어갈 수 없는 칸, 1은 참가자가 들어갈 수 있는 칸을 www.acmicpc.net 이동 조건을 잘못이해해서 헤맸던 문제이다. 입구에서 이동할 때 바깥 면에 있는 칸으로만 이동이 된다고 이해해서 예제 입력 3번부터 답이 이상했다. 근데 알고보니 그냥 3차원 BFS 바깥면 상관없이다 모든 칸으로 이동이 가능한거였다. 문제는 순열+배열회전+BFS인데 크게 어려운건 없다고 생각했다. 주어진 판의 순서를 섞고 각 판을 회전하여 조합을 만든 후 BFS로..
문제 링크 : https://www.acmicpc.net/problem/13459 13459번: 구슬 탈출 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net BFS로 풀면 된다는 것은 간단하게 캐치 할 수 있다. 하지만 단순히 2차원 배열가지고 해결하기에는 힘들다. 할 수 있는지도 잘 모르겠다. 핵심은 각 구슬의 위치를 동시에 가지고 가야한다는 것이다. 그렇기 때문에 방문 체크도 동시에 해야한다. 따라서 방문배열를 4차원으로 같은 시점의 빨간공, 파란공의 좌표를 동시에 체크해줘야한다. 이부분..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 간단한 BFS 문제이다. 한지점에서 출발하여 도달할 수 있는 모든 지점은 같은 네트워크이다. 이때 네트워크의 개수를 구하는 것이다. 방문한 점을 방문 표시해주고 그 점에서 BFS를 시작한다. 이때 BFS를 몇번 돌렸는지 구하면 된다. from collections import deque def solution(n, computers): ans..
문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7I5fgqEogDFAXB SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 모든 점에서 BFS를 돌리는데 이때 방문체크는 하지 않는다. BFS를 돌리면서 각점의 숫자들을 이어붙여서 새로운 숫자를 만들고 7자리가 됐을 때 저장한다. 이때 같은 숫자는 체크하면 안되므로 set을 이용하여 중복제거를 했고 마지막에 set의 길이를 출력한다. from collections import deque dx = [-1,1,0,0] dy = [0,0,-1,1] tc = int..
문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14vXUqAGMCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 그냥 단순한 BFS 문제이다. from collections import deque dx = [-1,1,0,0] dy = [0,0,-1,1] visited = [[0]*16 for _ in range(16)] visited_num = 0 def solv(t): global board input() board = [] sx=sy=-1 for x in range(16): board.app..
문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 시작점에서 출발하여 가중치인 복구 시간을 가장 적게 하면서 도착지로 이동하는 문제이다. 우선순위 큐를 사용하여 BFS로 구현했다. 우선순위 큐는 heapq 패키지로 사용하여 복구시간을 최우선기준으로 잡고 했다. import heapq dx = [-1,1,0,0] dy = [0,0,-1,1] tc = int(input()) visited = [[0]*100 for _ in range(1..