Loading...

[백준] 3055번 탈출 (java, bfs)

www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 청소년 상어를 풀고나서 이 문제를 푸니 dfs가 익숙해서 dfs로 경우를 탐색하다가 메모리 초과가 났다. 가끔 bfs로만 되거나 dfs만 되는 문제들이 있어서 헷갈리는데 최단 시간 (같은 위치 구간에서 동시에 탐색할 때)는 bfs이고 모든 경우의 수를 다 돌아봐야하는 경우 (청소년 상어처럼 먹는 물고기 번호가 가장 큰것을 구하는 것)은 dfs인 것 같다. 물이 차오를 지역도 못간다는 것은 즉, 물이 찬 것과 같다라는 뜻이라..

[백준] 17276번 배열 돌리기 (java, 구현)

www.acmicpc.net/problem/17276 17276번: 배열 돌리기 각 테스트 케이스에 대해 회전 연산을 마친 후 배열의 상태를 출력한다. n줄에 걸쳐 각 줄에 n개의 정수를 공백으로 구분하여 출력한다. www.acmicpc.net 대각선 45도, -45도로 배열을 돌리는 문제. 주 대각선들 외에는 그대로 냅둔다. import java.util.Scanner; public class Main { static int n,t,d; public static void main(String[] args) { Scanner sc=new Scanner(System.in); t=sc.nextInt(); for (int tc = 1; tc

[백준] 20058번 마법사 상어와 파이어 스톰 (java, 시뮬레이션)

www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 다른 것은 일반 bfs문제와 크게 다를 것이 없는데 배열 회전하는 부분이 어려웠다 ㅠㅠ 예전에 한 번 해봐서 괜찮겠지 했는데 수학 계산을 못하겠어서ㅋㅋㅋㅋㅋ 길이가 4일때 첫 열의 세로줄 2 1 5 7 을 첫 행의 가로줄로 만들기 위해서 2 1 5 7 가로줄의 열 번호와 행번호를 sx, sy라는 변수를 따로 만들어서 증가시키고 첫 열의 세로줄은 for문의 변수를 돌리는 방식으로 해줬다. 내일..

[백준] 16234번 인구 이동 (bfs, 시뮬레이션, java)

www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net arraylist는 검사 시작점과 연합국인 곳들의 좌표가 들어가는 리스트이다. 1. 방문 안된 곳에서 상하좌우를 검사하면서 경계를 열 수있는 곳을 검사한다. 연합국이 되면 sum+=연합국 인구수, cnt(연합국에 들어가는 개수)+1해주고 arraylist에 새로운 연합국의 좌표를 넣어준다. 2. 시작한 곳에서 bfs로 최대한 검사할 수 있는 곳까지 다 검사가 끝나면 arraylist 좌표에 해당하..

[백준] 20055번 컨베이어 벨트 위의 로봇 (java, 구현)

www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net import java.util.ArrayList; import java.util.Scanner; public class Main { static int n,k; static int[] belt; static ArrayList list=new ArrayList(); static boolean[] pos; public static void main(String[] args) { Scanner ..

[백준] 7569번 토마토 (java, 3차원 bfs)

www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 앞뒤를 나타내는 좌표 이동을 추가해서 추가로 검사해준다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Pos{ int h,y,x; public Pos(int h, int y, int x) { super(); this.h = h; this.y = y; this.x = x; } } pu..

[백준] 17144번 미세먼지 안녕! (java, 구현)

www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net import java.util.ArrayList; import java.util.Scanner; class Pos{ int y, x; public Pos(int y, int x) { super(); this.y = y; this.x = x; } } public class Main { static int r,c,t; static int[][] map; static int[][] add; static int[] ..

[백준] 7576번 토마토 (bfs)

www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 한 번에 1인 곳 주변이 모두 익어야되기 때문에 큐에 현재 1인곳을 다 집어넣고 매번 순회할 시에 모두 bfs탐색을 한꺼번에 해준다. for문 (현재 익어있는 토마토 개수)만큼 bfs를 돌면서 큐에 넣어준 다음에야 다음 차례의 토마토들이 큐에서 나온다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; c..

[백준] 17413번 단어 뒤집기 2 (JAVA, 구현)

www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 자바에 문자열을 뒤집는 메소드가 없는 것이 아쉽다. 문자 배열 => 리스트 => SORT함수를 쓰던가 이런식으로 FOR문으로 뒤집어 출력해야되는데 아주 귀찮다 ㅠ import java.util.Scanner; public class Main { static String s; public static void main(String[] args) { Scanner sc=new Sca..

[백준] 19532번 수학은 비대면 강의입니다. (java, 완전탐색)

www.acmicpc.net/problem/19532 19532번: 수학은 비대면강의입니다 정수 $a$, $b$, $c$, $d$, $e$, $f$가 공백으로 구분되어 차례대로 주어진다. ($-999 \leq a,b,c,d,e,f \leq 999$) 문제에서 언급한 방정식을 만족하는 $\left(x,y\right)$가 유일하게 존재하고, 이 때 $x$와 $y$가 각각 $- www.acmicpc.net 그냥 포문돌리면되는데 어렵게 생각함 바보바보 import java.util.Scanner; public class Main { static int a,b,c,e,d,f; public static void main(String[] args) { Scanner sc=new Scanner(System.in); a..