Problem Solving/BOJ(백준)
-
[BOJ]백준 22352번: 항체 인식(Python)/BFSProblem Solving/BOJ(백준) 2021. 8. 4. 20:50
https://www.acmicpc.net/problem/22352 22352번: 항체 인식 첫 번째 줄에는 SP 촬영 결과의 크기를 의미하는 두 정수 $N$과 $M$이 주어진다. ($1 \le N, M \le 30$) 이는 촬영 결과가 세로로 $N$칸, 가로로 $M$칸 크기의 격자라는 것을 의미한다. 다음 $N$개의 줄에는 www.acmicpc.net 특정 좌표에서 BFS또는 DFS를 시행하여 같은 숫자인 칸을 전부 업데이트 시킨 뒤 주어진 배열과 같은지 검사하면 되는 간단한 BFS 문제 import sys from collections import deque def bfs(r, c, num): global origin, after, n, m dx=[1,0,-1,0] dy=[0,1,0,-1] visit..
-
[BOJ]백준 20304번: 비밀번호 제작(Python)/Bitmask, BFSProblem Solving/BOJ(백준) 2021. 8. 4. 01:27
https://www.acmicpc.net/problem/20304 20304번: 비밀번호 제작 서강대학교 전산실에서 보안직원으로 일하는 향빈이는 한 통의 이메일을 받게 되었다. 이메일에는 서버 관리자 계정에 대한 비정상적인 로그인 시도가 감지되었다는 내용이 적혀 있었고, 첨부 www.acmicpc.net 익숙한 문제? ㅎㅎ 틀린문제 리스트에 있는게 싫어서 오랜만에 다시 풀어봤다 아주 훌륭한 문제였다 ( = 어렵다는 뜻 ) 안전거리와 안전도가 등장하는데 안전거리를 구하는 것 자체는 XOR 풀이가 직관적으로 떠오를 수 있지만 비밀번호 후보를 찾는 데에 Bitmask + BFS를 바로 떠올리기는 쉽지 않다 항상 특별한 분류의 알고리즘 문제를 풀 때에는 (바로 생각나는 브루트포스 풀이 + 최적화할 수 있는 솔..
-
[BOJ]백준 20058번: 마법사 상어와 파이어스톰(C++)/SimulationProblem Solving/BOJ(백준) 2021. 7. 31. 16:34
https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 회전할 부분 배열을 탐색하는 방법을 나눠서 2가지 버전으로 풀었다 한 가지 헤맸던 부분은 사방의 얼음 유무를 보고 얼음의 양을 감소시키는 로직에서 탐색 도중에 감소시키는 것이 아닌 탐색이 완료된 뒤 감소시켰어야 했는데 그 부분을 혼동하다 보니 정확한 값을 찾는 데 헤맸다 ㅠ #include #include #define pow2(x) (1= 0 && y < n; } void m..
-
[BOJ] 백준 22251번: 빌런 호석(C++)/BitMaskingProblem Solving/BOJ(백준) 2021. 7. 24. 23:23
https://www.acmicpc.net/problem/22251 22251번: 빌런 호석 LED를 2개까지 바꿀 수 있을 때, 5층에서 3층, 6층, 8층, 그리고 9층으로 바꿔버릴 수 있다. www.acmicpc.net 류호석배 알고리즘 코딩 테스트는 문제 퀄리티가 정말 좋아서 자주 푸는데 이번에도 새로운 코딩 테스트가 열렸다 실시간으로 참여할까 했지만 평일에 5시간이나 백준 문제를 풀면 너무 지칠 것 같아서ㅠ 천천히 풀어보려고 한다 이 문제는 특이하게 숫자 -> 숫자로 변환하는 과정에서 비트마스킹을 사용했다 아래의 그림처럼, 5를 3으로 바꾸기 위해서는 오른쪽 위의 LED를 켜고 왼쪽 위의 LED를 꺼야해서 2회의 반전이 필요하다 나는 각각의 위치에 대해 번호를 매기고 LED가 켜져있으면 1, 꺼..
-
[BOJ]백준 11779번: 최소비용 구하기 2(C++)/DijkstraProblem Solving/BOJ(백준) 2021. 7. 20. 01:07
https://www.acmicpc.net/problem/11779 11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net 다익스트라를 이용해서 최소 비용 및 경로를 구하는 문제 경로를 구할 때에는 pre라는 vector를 만들어서 각 노드로의 최소 비용이 갱신될 때 마다 pre배열도 갱신시켜주면 된다 마지막에는 도착지점으로부터 시작 지점이 나올 때 까지 재귀적으로 tracking하면 끝 #include #include #include #include #define pii pair #d..
-
[BOJ]백준 7795번: 먹을 것인가 먹힐 것인가(C++)/Binary Search, Two PointerProblem Solving/BOJ(백준) 2021. 7. 11. 01:58
https://www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 세 가지 방식으로 풀이했다 우선 입력받은 두 배열을 모두 정렬하는 것은 똑같고, 이후의 과정을 1️⃣완전탐색 2️⃣이진탐색 3️⃣투포인터 세 가지 방법으로 풀었다. 완전 탐색 풀이 #include #include #include using namespace std; int t, n, m; vector a, b; int main() { scanf(..
-
[BOJ]백준 13424번: 비밀 모임(C++)/DijkstraProblem Solving/BOJ(백준) 2021. 7. 9. 00:49
https://www.acmicpc.net/problem/13424 13424번: 비밀 모임 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 방 www.acmicpc.net 또익스트라 구현 코드를 조금 바꿔보았다 이 문제는 입력받은 정점 리스트에 대해 최단거리 합이 가장 작은 정점을 구하는 기본기본 문제였다 보편적인 코테 뚫으려면 구현+문자열 위주로 연습해야 되는데 ..... 카카오 코테 준비하려면 다양하게도 풀어야되고 .......... 어떻게 해야될지 정말 ~~~~ 모르겠다 ~~ 이제 기본문제 말고 응용문제로 넘어가야지... ㅠㅠ 달빛여우한테 혼났다..........
-
[BOJ]백준 18223번: 민준이와 마산 그리고 건우(C++)/DijkstraProblem Solving/BOJ(백준) 2021. 7. 6. 01:46
https://www.acmicpc.net/problem/18223 18223번: 민준이와 마산 그리고 건우 입력의 첫 번째 줄에 정점의 개수 V와 간선의 개수 E, 그리고 건우가 위치한 정점 P가 주어진다. (2 ≤ V ≤ 5,000, 1 ≤ E ≤ 10,000, 1 ≤ P ≤ V) 두 번째 줄부터 E개의 줄에 걸쳐 각 간선의 정보 www.acmicpc.net 다익스트라 기본 문제 !! 최단거리 경로에 특정 정점 P가 포함될 수 있느냐? 를 묻는 문제이다 시작 노드 ➡ 도착 노드 로의 최단거리를 구하고, 시작 노드 ➡ 경유 노드 ➡ 도착 노드 의 최단거리를 구했을 때 합이 같거나 작아야 한다(사실 같아야 한다) #include #include #include #define pii pair #define..