철학하는 개발자

있는 것은 있고, 없는 것은 없다.

PS/Baekjoon Online Judge 716

[백준 18405] 경쟁적 전염 [Java]

문제https://www.acmicpc.net/problem/18405 풀이N * N크기의 보드에서 번호가 낮은 바이러스부터 상하좌우로 증식한다.이 때, S초 후 ( X, Y )에 위치한 바이러스를 출력하는 문제다.우선 ( X, Y )에 시작부터 바이러스가 있을 수 있다. 확인 후 탐색을 진행하자. private static int bfs() { if (A[X - 1][Y - 1] != 0) return;번호가 낮은 바이러스 먼저 증식해야 하기 때문에 바이러스를 찾아, 바이러스 번호에 대해 오름차순으로 정렬 후 큐에 담아주자. List list = new ArrayList(); for (int i = 0; i 0) { ..

[백준 26310] Finalists [Java]

문제https://www.acmicpc.net/problem/26310 풀이문제에서 주어진 절차 A1 ~ A4에 따라 각 지역의 경쟁력을 계산하고, 최종 팀을 결정하는 문제다.A1에서는 주어진 가중치에 따라 점수를 계산하면 된다. // A1 // 입력 순서: s p_t p_u r_t r_u f // site score = 0.56 * r_u + 0.24 * r_t + 0.14 * p_u + 0.06 * p_t + 0.3 * f for (int i = 0; i A2에서는 경쟁력을 기준으로 내림차순 정렬하면 된다. // A2 regionals.sort((a, b)-> Double.compare(b.score, a.score));A3에..

[백준 12571] Rope Intranet (Small) [Java]

문제https://www.acmicpc.net/problem/12571 풀이선분의 양쪽 끝 위치 정보가 주어졌을 때, 선분들의 교차점을 모두 세는 문제다.N은 2이하로, 단순 비교를 통해 선분의 시작점에 대해 교착점을 탐색하면 된다. // Solve if (N == 1) { sb.append(String.format("Case #%d: 0\\n", t)); } else { final int A1 = input[0]; final int B1 = input[1]; input = Arrays.stream(br.readLine().split(" "..

[백준 12352] Hedgemony (Large) [Java]

문제https://www.acmicpc.net/problem/12352 풀이이전의 Hedgemony (Small) 에서 N이 1,000으로 늘어난 문제다.2025.03.02 - [PS/Baekjoon Online Judge] - [백준 12351] Hedgemony (Small) [Java] [백준 12351] Hedgemony (Small) [Java]문제https://www.acmicpc.net/problem/12351 풀이입력받은 N개의 덤불 높이에 대해 문제의 조건대로 높이를 조절하는 문제다.2번 덤불부터 N - 1번 덤불에 대해 i번 덤불의 높이가 i - 1, i + 1덤불의 평균보다kyr-db.tistory.com 기존의 풀이로도 동일하게 해결할 수 있다.소스코드https://github.co..

[백준 12351] Hedgemony (Small) [Java]

문제https://www.acmicpc.net/problem/12351 풀이입력받은 N개의 덤불 높이에 대해 문제의 조건대로 높이를 조절하는 문제다.2번 덤불부터 N - 1번 덤불에 대해 i번 덤불의 높이가 i - 1, i + 1덤불의 평균보다 큰 경우에 평균으로 길이를 조절해야 한다. // Solve for (int j = 1; j avg) { A[j] = avg; } }N - 1번째 덤불의 높이를 출력해주자. sb.append("Case #").append(i).append(": ").append(A[N - 2]).append("\\n"); }소스코..

[백준 11970] Fence Painting [Java]

문제https://www.acmicpc.net/problem/11970 풀이주어지는 A, B, C, D에 대해 A ~ B구간의 길이와 C ~ D구간의 길이를 구하는 문제다.만약 두 구간이 겹친다면, 중복되는 구간을 제외한 길이를 출력해야 한다.조건식으로 두 구간이 겹치치 않는다면 각 구간의 길이를, 겹친다면 두 구간의 전체 길이를 출력했다.System.out.println(C >= B || D 소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/11970.java

[백준 11908] 카드 [Java]

문제https://www.acmicpc.net/problem/11908 풀이N개의 카드 중 문제에서 주어진 조건대로 N - 1개의 카드를 제거하는 문제다.결국 가장 큰 수가 남게 되기 때문에 배열을 정렬 후 0 ~ N - 1까지의 합을 출력하면 된다. // Solve Arrays.sort(arr); int sum = 0; for (int i = 0; i 소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/11908.java

[백준 01405] 미친 로봇 [Python]

문제https://www.acmicpc.net/problem/1405 풀이로봇이 확률에 따라 상하좌우로 움직인다고 한다.이동 가능한 모든 경로에 대해, 방문하지 않은 곳을 방문하는 비율을 구하는 문제로 재해석할 수 있다.주어진 상하좌우로 움직이는 확률을 방향 좌표와 함께 묶어주자.문제에서 주어진 N은 14이기 때문에 -14 ~ 14를 고려해 보드의 크기는 29면 충분하다.if __name__ == '__main__': visited = [[False] * 29 for _ in range(29)] # Input N, *D = map(int, input().split()) D = [(*point, d * 0.01) for point, d in zip([(0, 1), (0, -1)..

[백준 02178] 미로 탐색 [Python]

문제https://www.acmicpc.net/problem/2178 풀이주어진 보드의 (0, 0)에서 (N - 1, M - 1)에 도달하기 위해 움직인 최소 횟수를 구하는 문제다.BFS로 탐색을 진행했다.if __name__ == '__main__': # Input N, M = map(int, input().split()) board = [[*map(int, input().rstrip())] for _ in range(N)] # Solve & Output print(bfs(N - 1, M - 1))큐에는 현재 위치 (x, y)를 담았으며, 따로 방문 횟수를 기록해도 되지만 주어진 board를 활용했다.빈 공간은 1로, 이동하면서 기존 위치의 값 + 1으로 채웠다.이미 방문한 ..

[백준 01697] 숨박꼭질 [Python]

문제https://www.acmicpc.net/problem/1697 풀이0 이상 10만 이하의 N과 K에 대해 다음 연산을 통해 N이 K가 되는 가장 빠른 연산 횟수를 구하는 문제다.BFS를 통해 (연산 결과, 연산 횟수) 쌍을 큐에 담아줬다.from collections import dequefrom sys import stdininput = stdin.readlinedef bfs(start, end): queue = deque([(start, 0)]) visited = [False] * 100_001 visited[start] = True요소를 하나씩 제거하며 연산 결과가 K가 될 때 까지 반복했으며,새로운 N은 0 ~ 100,000을 벗어나지 않고, 계산해본 적 없는 수에 대해서만..