본문 바로가기

알고리즘/문제풀이

(78)
[백준] 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)에서 설정하..
[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
[백준] 4179. 불! https://www.acmicpc.net/problem/4179 4179번: 불! 문제 지훈이는 미로에서 일을 한다. 지훈이를 미로에서 탈출하도록 도와주자! 미로에서의 지훈이의 위치와 불이 붙은 위치를 감안해서 지훈이가 불에 타기전에 탈출할 수 있는지의 여부, 그리고 얼마나 빨리 탈출할 수 있는지를 결정해야한다. 지훈이와 불은 매 분마다 한칸씩 수평또는 수직으로(비스듬하게 이동하지 않는다) 이동한다. 불은 각 지점에서 네 방향으로 확산된다. 지훈이는 미로의 가장자리에 접한 공간에서 탈출할 수 있다. 지훈이와 불은 벽이 있는 공간 www.acmicpc.net [ 문제 풀이 ] 저는 지훈이와 불이 상, 하, 좌, 우 네 방향으로 움직일 수 있기 때문에 Queue 를 사용하였습니다. 이 문제에서는 지훈이와 ..
[백준] 17136. 색종이 붙이기 https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크기가 10×10인 종이 위에 붙이려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 0 또는 1이 적혀 있다. 1이 적힌 칸은 모두 색종이로 덮여져야 한다. 색종이를 붙일 때는 종이의 경계 밖으로 나가서는 안되고, 겹쳐 www.acmicpc.net 처음 이 문제를 풀 때에는 1을 만나면 거기서부터 붙일 수 있는 가장 큰 색종이를 붙이면 된다고 생각했습니다. 하지만 다음 예제를 생각해보면 좌표 (1..
[정올] 1169. 주사위 던지기1 http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=449&sca=99&sfl=wr_hit&stx=1169 JUNGOL | 주사위 던지기1 > 문제은행 주사위를 던진 횟수 N과 출력형식 M을 입력 받아서 M의 값에 따라 각각 아래와 같이 출력하는 프로그램을 작성하시오. M = 1 : 주사위를 N번 던져서 나올 수 있는 모든 경우 M = 2 : 주사위를 N번 던져서 중복이 되는 경우를 제외하고 나올 수 있는 모든 경우 M = 3 : 주사위를 N번 던져서 모두 다른 수가 나올 수 있는 모든 경우 * 중복의 예 1 1 2 와 중복 : 1 2 1, 2 1 1 1 2 3 과 중복 : 1 3 2, 2 1 3, 2 www.jungol.co.kr import jav..
[백준] 11559. Puyo Puyo https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo 현재 주어진 상황에서 몇연쇄가 되는지 출력하라. (하나도 터지지 않는다면 0을 출력하면 된다.) www.acmicpc.net [ 문제 풀이 ] 1. 4개 이상 모여있는 뿌요들을 없애고, 아래로 떨어뜨린 map 을 그 전과 같은지 확인하기 위해서 copy_map 에 초기값을 복사해 놓고 연산이 끝난 후에 비교해서 같으면 더 이상 연산을 안하고 break 로 답을 출력합니다. 2. DFS(x좌표, y좌표, 뿌요의 종류) 를 통해서 뿌요의 종류가 4개이상 상하좌우로 연결되어 있으면 뿌요들을 모두 . 으로 바꿔줍니다. 3. 뿌요들이 없어지고 빈공간에 나머지 뿌요들을 떨어뜨려 줍니다. 4. 처음에 저장했던 copy..
[SWEA] 2007. 패턴 마디의 길이 import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for(int tc=1; tc