일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- SWEA
- level 1
- 코드 리뷰
- 2020 KAKAO BLIND
- 2019 KAKAO BLIND
- Gold 5
- 그리디
- Level 3
- 스택/큐
- DP
- 프로그래머스
- BFS
- c++
- 부스트코스
- 삼성 SW 역량 테스트
- Level 4
- 시뮬레이션
- Level 2
- next_permutation
- 월간 코드 챌린지
- 코드리뷰
- 구현
- DFS
- 브루트포스
- Gold 4
- 백트래킹
- 백준
- pass
- Web
- 2020 카카오 인턴십
- Today
- Total
목록BFS (10)
Min:D's Devlog
문제 백준 삼성 SW 역량 테스트 기출 문제 - 14502 연구소 (Gold 5) 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net 문제 풀이 접근 방식 이 문제는 벽 3개를 세운 뒤, 얻을 수 있는 안전 영역 크기의 최댓값을 구하는 문제이다. 우선, 3중 for문으로 벽 3개를 세운 뒤, DFS 함수를 만들어 바이러스를 퍼뜨려주었다. (입력 받을 때, 바이러스의 위치를 저장하여 BFS 방식으로 바이러스를 퍼뜨려줘도 된다.) 그 후, map에 있는 0의 개수를 세어 안전 영역의 크기를 구해주었다. 이 값을 max값과 비교하..
문제 백준 삼성 SW 역량 테스트 기출 문제 - 14891 톱니바퀴 (Silver 1) 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 � www.acmicpc.net 문제 풀이 접근 방식 주어진 규칙대로 톱니바퀴를 회전시킬 때, 최종 톱니바퀴의 상태를 구하는 문제이다. 한 톱니바퀴가 회전할 때 옆의 톱니바퀴와 맞닿은 톱니의 극이 다른 경우, 옆의 톱니바퀴는 반대방향으로 회전하게 된다. 이를 고려하여 톱니바퀴를 회전시켜주었다. 우선, 회전시킬 톱니바퀴의 주변으로 퍼져나가며 함께 회전시킬 바퀴들을 탐색을 해야하기 때문에, BFS 함수를..
문제 프로그래머스 DFS/BFS - 타겟 넘버 (Level 2) 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 문제 풀이 접근 방식 주어진 배열의 숫자들을 더하거나 빼서 타겟 넘버를 만드는 방법의 수를 구하는 문제이다.이 문제는 BFS 방식으로 해결해주었다. 우선, 결괏값을 저장할 배열인 answer_list에 0을 넣어주었고,그 배열의 값에 numbers[i]를 더한 값과 뺀 값을 temp에 넣어주었다.temp에 저장된 결괏값들은 answer_list에..
문제 프로그래머스 2020 KAKAO BLIND RECRUITMENT - 블록 이동하기 (Level 3) 코딩테스트 연습 - 블록 이동하기 [[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 문제 풀이 접근 방식 이 문제는 2020 카카오 블라인드 채용 1차 코딩테스트 7번 문제로, 정답률이 1.7%인 쉽지 않은 문제였다. 구하고자 하는 것은 로봇이 (N, N) 위치까지 이동하는데 필요한 최소 시간이다. 이 문제는 최소 시간을 구하는 기존의 BFS + DP 문제와 푸는 방식은 비슷했지만, 로봇이 점 두 개로 이루어져 있어서 구현하기가 복잡하였다. 이 문제를 기존의 방식처럼 풀..
문제 프로그래머스 2020 카카오 인턴십 - 동굴 탐험 (Level 4) 코딩테스트 연습 - 동굴 탐험 9 [[0,1],[0,3],[0,7],[8,1],[3,6],[1,2],[4,7],[7,5]] [[8,5],[6,7],[4,1]] true 9 [[8,1],[0,1],[1,2],[0,7],[4,7],[0,3],[7,5],[3,6]] [[4,1],[5,2]] true 9 [[0,1],[0,3],[0,7],[8,1],[3,6],[1,2],[4,7],[7,5]] [[4,1],[8,7],[6,5]] false programmers.co.kr 문제 풀이 접근 방식 프로도가 정한 방문 순서 규칙에 맞게 모든 방을 탐험할 수 있는지를 구하는 문제이다. 이 문제는 이해하기가 너무 어려워서 '질문하기'에 있는 풀이를 참..
문제 SWEA 모의 SW 역량테스트 - 5653 줄기세포배양 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 K시간 후 살아있는 줄기 세포의 총개수를 구하는 문제이다. 이를 구하기 위해 우선 cell이라는 구조체를 만들어서 위치(x, y)와 생명력 수치(X), 현재 남은 생명력 수치(t)를 저장해주었다. struct cell { int x; int y; int X; int t; }; 그리고 배양 시간의 최댓값은 300 시간이고, 배양 용기의 초기 크기는 최대 50 × 50이다. 즉, 생명력 수치가 1인 세포가 번식하는 데 걸리는 시간은 총 2시간으로, 300시간 동안에는 상하좌우로 150만..
문제 백준 - 1261 알고스팟 (Gold 4) 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 문제 풀이 접근 방식 이 문제는 0, 0에서 시작하여 N-1, M-1에 도달하기 위해 파괴한 벽의 개수의 최솟값을 구하는 문제이다. 그래서 BFS + DP의 방식으로 이 문제를 해결하였다. 우선, destroy라는 2차원 벡터의 모든 값들을 큰 수(987654321)로 설정해놓고,BFS 탐색을 수행하며 그 위치에 도달하기 위해 파괴한 벽의 개수의 최솟값을 destroy 벡터에 저장해주었다. 즉..
문제 SWEA 모의 SW 역량테스트 - 2382 미생물 격리 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 매 시간마다 미생물 군집을 이동시켜야 하는 문제이므로, BFS 방식으로 문제를 해결하였다. cluster 구조체를 만들어서 이동할 군집들의 위치(x, y)와 현재 시간(m)을 저장하여 큐에 넣어주었고, map은 3차원 배열로 만들어서 map[x][y][0]에는 미생물의 수, map[x][y][1]에는 방향, map[x][y][2]에는 겹치는 경우에 미생물 수가 가장 많은 군집의 미생물 수를 저장하였다. 미생물 군집의 정보를 입력 받을 때, 그 군집의 미생물 수와 방향은 map에 저장..
문제 SWEA 모의 SW 역량테스트 - 1953 탈주범 검거 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 파이프 모양을 고려하여 BFS로 문제를 해결하였다. 우선, location 구조체를 만들어 위치(r, c)와 남은 시간(l)을 저장해주었고, 이를 큐에 넣어 BFS를 시행하였다. BFS 내에서는 switch문을 사용하여 파이프의 모양에 따라 이동할 수 있는 방향을 각각 넣어주었다. (0 : 상, 1 : 우, 2 : 하, 3 : 좌) switch (map[now.r][now.c]) { case 1: go_dirs = {0, 1, 2, 3}; break; case 2: go_dirs =..
문제 프로그래머스 DFS/BFS - 단어 변환 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 hit, target가 cog, words가 [ho..