알고리즘/백준(4)
-
[백준] 컴백홈
문제 링크 : https://www.acmicpc.net/problem/1189 1189번: 컴백홈 첫 줄에 정수 R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)가 공백으로 구분되어 주어진다. 두 번째부터 R+1번째 줄까지는 R×C 맵의 정보를 나타내는 '.'과 'T'로 구성된 길이가 C인 문자열이 주어진다 www.acmicpc.net 문제를 처음 봤을 때 거리가 K인 조건을 생각 안하고 풀어서 다른 결과가 나와서 당황했던 기억이 난다. 처음 봤을 때 처음 시작하는 부분에서 집까지 가는 거리를 구하니까 DFS로 구해야 겠다고 생각했다. 이렇게 생각하게 된 계기는 다음과 같다. DFS는 깊이 탐색으로 한 노드를 시작점으로 잡는다면 깊이로 탐색(?) 한다고 생각하면 된다. 이전에..
2022.07.26 -
[백준] 합이 0
문제 링크 : https://www.acmicpc.net/problem/3151 3151번: 합이 0 Elly는 예상치 못하게 프로그래밍 대회를 준비하는 학생들을 가르칠 위기에 처했다. 대회는 정확히 3명으로 구성된 팀만 참가가 가능하다. 그러나 그녀가 가르칠 학생들에게는 큰 문제가 있었다. www.acmicpc.net 처음에는 3중 for문을 생각했으나 그렇게 풀면 O(n^3)이 나오니 당연히 안 될 거 같았다. 생각 중에 아래에 태그를 보니까 이렇게 나와 있었다. 전체 탐색을 하지만 이분 탐색으로 탐색을 하는 것과 두 포인터를 잡는 것을 보면서 먼저 입력된 배열을 sort 하고 -> 이분 탐색을 하는데 포인터를 두 개를 두거나 이분 탐색을 두 번 해서 합을 찾는 것으로 생각을 해봤다. 그래서 첫번째로..
2022.05.13 -
[백준] 토마토
문제 링크 : https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 상하좌우를 살펴야 하니 BFS를 사용해서 풀어야 겠다고 생각했다. 처음 골드 문제를 풀기 시작한 거 같다. 일단 익은 토마토의 좌표를 저장할 수 있는 클래스를 만들었다. class Tomato { int x; int y; public Tomato(int x, int y) { this.x = x; this.y = y; } public int getX() { return..
2022.05.03 -
[백준] 옥상 정원 꾸미기 6198
문제 링크 : https://www.acmicpc.net/problem/6198 6198번: 옥상 정원 꾸미기 문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으 www.acmicpc.net public class GardenOn_6198 { public static int findNumber(int build[]) { int ans = 0; int len = build.length; for (int i = 0; i build[j]..
2022.05.03