본문 바로가기

분류 전체보기

(229)
[SWEA] 1258. 행렬찾기 [ 문제 풀이 ] 1. DFS를 하면서 화학 물질이 들어있는 용기들의 좌표를 visited 에 true 로 표시해줍니다. 2. 표시했으면 용기들의 가로세로 길이를 구해야하기 때문에 다시 반복문을 처음부터 돌면서 visited 가 true인 좌표에서 좌우로 visited 가 true 인 곳을 r과 c로 체크하여 가로 세로 길이를 구하고 getLen 이라는 2차원 boolean 배열에 표시합니다. 그 이유는 다음 좌표가 이미 용기로 정해져 계산 될 경우 그 자리는 계산하지 않아도 된다는 것을 표시하기 위함입니다. import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Solution { st..
[백준] 17471. 게리맨더링 https://www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net N 개의 구역이 있으면 1 ~ N-1 개의 뽑을 수 있는 모든 구역을 뽑아서 두 가지를 판단 합니다. ① 뽑힌 선거구가 연결 되어 있는지 ② 뽑힌 선거구를 제외한 나머지 선거구들이 연결 돼 있는지 두 가지 조건을 만족하면 각 선거구들의 포함된 인구수를 구해서 차이값을 계속 비교하면서 최소를 구합니다. 제가 처음에 썻던 조합코드는 중복 때문에 시간초과가 나왔는데, 제가 정리했던 https://daily-life-of-b..
[백준] 17135. 캐슬 디펜스 https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 문제에서 나온 순서대로 진행하면 되는 시뮬레이션 문제입니다. 문제를 풀면서 주의할 점이 2가지 있습니다. (1) 궁수 3명을 배치할 수 있는 모든 자리에 배치하여 그 때 마다 게임을 진행 해 보면서 제거할 수 있는 적의 최대 수를 계산하는 것 (2) 궁수가 공격하는 적은 거리가 D 이하인 적 중에서 가장 가까운 적인데, 그러한 적이 여럿일 경우에 가장 왼쪽에 있는 적을 공격하며, 같은 적이 여러 궁수에게 공..
[백준] 3109. 빵집 https://www.acmicpc.net/problem/3109 3109번: 빵집 문제 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 중에, 가스비가 제일 크다는 것을 알게되었다. 따라서 원웅이는 근처 빵집의 가스관에 몰래 파이프를 설치해 훔쳐서 사용하기로 했다. 빵집이 있는 곳은 R*C 격자로 표현할 수 있다. 첫째 열은 근처 빵집의 가스관이고, 마지막 열은 원웅이의 빵집이다. 원웅이는 가스관과 빵 www.acmicpc.net 원웅이가 설치할 수 있는 가스관과 빵집을 연결하는 파이프라인의 최대 개수를 구하는 문제입니다. 첫째 열은 근처 빵집의 가스관이고, 마지막 열..
[백준] 17070. 파이프 옮기기1 https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다. 파이프는 회전시킬 수 있으며, 아래와 같이 www.acmicpc.net 파이프가 차지하는 크기는 2칸이지만, 실질적으로 움직이는 파이프는 오른쪽 한칸이기 때문에 시작 좌표를 (0, 1)에서 설정하..
[백준] 17143. 낚시왕 https://www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. 칸에는 상어가 최대 한 마리 들어있을 수 있다. 상어는 크기와 속도를 가지고 있다. 낚시왕은 처음에 1번 열의 한 칸 왼쪽에 있다. 다음은 1초 동안 일어나는 일이며, 아래 적힌 순서대로 일어난다. 낚시왕은 가장 오른쪽 열의 오른쪽 칸에 이동하 www.acmicpc.net 이 문제에서는 어떻게 시간초과 나오지 않게 하는지 생각을 해야합니다. 저는 그래서 먼저 상어들의 정보를 가지고 있는 Shark 라는 C..
[SWEA] 1873. 상호의 배틀필드 import java.util.Scanner; public class Solution { static int T, H, W, x, y, d; static char[][] map; static int[][] dir = {{0,0}, {0,1}, {0,-1}, {1,0}, {-1,0}}; // 동서남북 public static void main(String[] args) { Scanner sc = new Scanner(System.in); T = sc.nextInt(); for(int tc=1; tc
[SWEA] 1861. 정사각형 방 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Solution { static int N, len; static int[][] map, dir = {{1,0}, {0,1}, {-1,0}, {0,-1}}; static boolean[][] visited; static Queue queue; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for(int tc=1; tc