백준 466

백준 3184번 양 C++

https://www.acmicpc.net/problem/3184 3184번: 양 첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다. www.acmicpc.net bfs #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long long; int dRow[4] = { -1,0,1,0 }; int dCol[4] ..

알고리즘 2023.06.30

백준 3187번 양치기 꿍 C++

https://www.acmicpc.net/problem/3187 3187번: 양치기 꿍 입력의 첫 번째 줄에는 각각 영역의 세로와 가로의 길이를 나타내는 두 개의 정수 R, C (3 ≤ R, C ≤ 250)가 주어진다. 다음 각 R줄에는 C개의 문자가 주어지며 이들은 위에서 설명한 기호들이다. www.acmicpc.net bfs #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long long; int dRow[4] = { -1,0,1,0 }; int dCol[4] ..

알고리즘 2023.06.29

백준 16507번 어두운 건 무서워 C++

https://www.acmicpc.net/problem/16507 16507번: 어두운 건 무서워 첫 번째 줄에는 사진의 크기를 의미하는 정수 R, C (1 ≤ R, C ≤ 1,000)와 사진 일부분의 밝기 평균을 알아볼 개수를 의미하는 정수 Q (1 ≤ Q ≤ 10,000)가 주어진다. 다음 R개의 줄에 걸쳐 R×C 크기의 사 www.acmicpc.net 누적합 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long long; in..

알고리즘 2023.06.22

백준 1431번 시리얼 번호 C++

https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net MyStr 구조체에 비교연산자 재정의 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long long; struct My..

알고리즘 2023.06.21

백준 12101번 1, 2, 3 더하기 2 C++

https://www.acmicpc.net/problem/12101 12101번: 1, 2, 3 더하기 2 n을 1, 2, 3의 합으로 나타내는 방법 중에서 사전 순으로 k번째에 오는 것을 출력한다. k번째 오는 식이 없는 경우에는 -1을 출력한다. www.acmicpc.net dfs #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long long; int n, k; int cnt = 1; bool ans = false; vector ..

알고리즘 2023.06.10

백준 17610번 양팔저울 C++

https://www.acmicpc.net/problem/17610 17610번: 양팔저울 무게가 서로 다른 k개의 추와 빈 그릇이 있다. 모든 추의 무게는 정수이고, 그릇의 무게는 0으로 간주한다. 양팔저울을 한 번만 이용하여 원하는 무게의 물을 그릇에 담고자 한다. 주어진 모든 추 www.acmicpc.net 저울에 추를 올리는 경우 : 1. 추를 올리지 않는 경우 2. 왼쪽에 올리는 경우 3. 오른쪽으로 올리는 경우 추가 최대 13개이기때문에 dfs로 가능한 문제이다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc..

알고리즘 2023.06.09

백준 21278번 호석이 두 마리 치킨 C++

https://www.acmicpc.net/problem/21278 21278번: 호석이 두 마리 치킨 위의 그림과 같이 1번과 2번 건물에 치킨집을 짓게 되면 1번부터 5번 건물에 대해 치킨집까지의 왕복 시간이 0, 0, 2, 2, 2 로 최소가 된다. 2번과 3번 건물에 지어도 동일한 왕복 시간이 나오지만 더 www.acmicpc.net 플로이드 워셜로 각 건물과의 거리를 전부 구하고 백트래킹을 통해 두개의 치킨집과의 왕복 거리의 합이 가장 적은 두 건물을 골랐다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ..

알고리즘 2023.06.08

백준 3182번 한동이는 공부가 하기 싫어! C++

https://www.acmicpc.net/problem/3182 3182번: 한동이는 공부가 하기 싫어! H-ALGO 회원인 한동이는 공부하는것을 좋아하지 않는다. 하지만 약삭빠르게도 한동이는 공부도 하지 않으면서 어려운 시험을 통과하고 싶어한다. 그러던 와중 어느 날, 한동이의 동기가 한동이에 www.acmicpc.net #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long long; int n; vector v; vector v..

알고리즘 2023.06.07

백준 19637번 IF문 좀 대신 써줘 C++

https://www.acmicpc.net/problem/19637 19637번: IF문 좀 대신 써줘 첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭 www.acmicpc.net 처음에 범위를 안보고 풀다가 시간초과가 났다. 이분탐색을 해결하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace ..

알고리즘 2023.06.06

백준 18404번 현명한 나이트 C++

https://www.acmicpc.net/problem/18404 18404번: 현명한 나이트 첫째 줄에 N과 M이 공백을 기준으로 구분되어 자연수로 주어진다. (1 ≤ N ≤ 500, 1 ≤ M ≤ 1,000) 둘째 줄에 나이트의 위치 (X, Y)를 의미하는 X와 Y가 공백을 기준으로 구분되어 자연수로 주어진다. ( www.acmicpc.net 매번마다 bfs를 돌리면 시간초과가 나기 때문에 최소 거리를 저장하는 배열을 만든다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using name..

알고리즘 2023.06.04