알고리즘
백준 10813번 공 바꾸기 [ Java ]
10813번: 공 바꾸기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 www.acmicpc.net import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); int[] num = new int[N]; for (int i=1; i0){ int n1 = sc.nextInt()-1; int n2 = sc.nextInt()-1; int temp..
백준 10819번 차이를 최대로 [ Java ]
10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 백트레킹을 이용하여 풀었습니다. import java.util.*; public class Main { static int max = 0; static int n; static int[] arr; static int[] newArr; static boolean[] visited; public static void main(String[] args){ Scanner sc = new Scanner(System.in); n = sc.nextInt(); arr = new int[n];..
백준 13913번 숨바꼭질4 [ Java ]
13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 기본 BFS 코드에서 방문배열 말고 parent 배열을 추가해주었습니다. import java.util.*; public class Main { public static void main(String[] args){ Queue Q = new LinkedList(); Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int K = sc.nextInt(); int[] dist =..
백준 13549번 숨바꼭질 3 [ Java ]
13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net BFS로 풀었습니다. 가중치가 동일하지 않은 정점을 이동하기 때문에 Q에 넣는 순서가 2배수 -1 +1로 이동하지 않으면 틀리는 문제였습니다. 아직 이러한 유형을 완벽하게 이해하진 못해서 공부가 더 필요할 것 같습니다. import java.util.*; public class Main { public static void main(String[] args){ Queue Q = new LinkedList(); Scanner sc ..
백준 6593번 상범 빌딩 [ Java ]
6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net import java.util.*; import java.io.*; public class Main { static int L, R, C; static int[] dx = new int[]{1, 0, 0, -1, 0, 0}; static int[] dy = new int[]{0, 1, 0, 0, -1, 0}; static int[] dz = new int[]{0, 0, 1, 0, 0, -1}; static String[][][] building; static Queu..
백준 2573번 빙산 [ Java ]
2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 기존에 BFS 기본 코드에서 새로운 melt라는 새로운 배열을 추가해 빙산의 영역기준으로 네 방향에 값들이 0보다 작거나 같으면 이후에 빼주는 코드를 작성했습니다. import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new Input..
백준 5014번 스타트링크 [ Java ]
5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); Queue Q = new Linke..
백준 2468번 안전 영역 [ Java ]
2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 비가 안오는 경우의 반례를 주의해야 합니다 2 11 11 answer : 1 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] dx = new int[]{1, 0, -1 ..
백준 10026번 적록색약 [ Java ]
10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 각각 따로 BFS를 돌려주었습니다. import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] dx = new int[]{1, 0, -1 ,0}; int[] dy = ..
백준 7562번 나이트의 이동 [ Java ]
7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net BFS 기본코드에 이동 좌표만 수정해주었습니다. import java.util.*; import java.io.*; public class Main { static StringBuilder sb = new StringBuilder(); static int[] dx = new int[]{1, 2, 2, 1, -1, -2, -2, -1}; static int[] dy = new int[]{2, 1, -1, -2, -2, -1, 1, 2}; static int N; s..