숨바꼭질이랑 거의 비슷한 문제였다. up의 경우와 down의 경우를 나누어서 bfs를 돌리니 쉽게 풀 수 있었다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main_5014 { /* s에서 출발해서 g까지 도달하는데 눌러야 하는 버튼 수의 최솟값을 구하는 문제 bfs를 활용해서 풀어보자 */ static int f, s, g, u, d; //주어지는 변수들 static in..
전체 글
프로그래밍 공부 기록DFS로 문제를 해결하였다. 처음에는 내리는 비의 양이 정해지지 않아서 이해를 못 했는데 배열에 들어가 있는 비를 list에 넣어주고 그만큼 반복을 돌리니 해결되었다. 방문처리 배열을 전역변수로 선언하고 반복을 돌기 전에 초기화를 시키고 문제를 풀었더니 계속 오답이 떴다. list에 저장된 비의 양이 바뀔 때마다 새로운 방문처리 배열이 필요하니까 반복문 안에서 초기화 해주는 것을 주의하자! package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util..
정해진 배열에서 찾는 문제만 풀다가 애매한 문제라고 생각이 들어서 코드를 짜는데 시간이 좀 걸렸다. bfs는 2차원 배열에서 주로 풀다보니까 1차원 배열에서 bfs를 쓴다는 생각을 못 했다. 단순하게 1차원 배열에서 주어진 조건에 따라 이동하면서 배열의 값을 1씩 증가 시키다가 동생을 만나면 종료하고 해당 인덱스의 값을 출력하는 식으로 풀었다. 코드에 주석을 달아놓았다! package sliver; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main_1697{ /* * 수빈이의 현재 위치에서 * 동생을 찾으러 가는데 걸리는 * 최단 시간 구하는 문제 * 1초에 +1, -1 * 순간이동..
3차원 배열을 사용한 문제는 처음이라 조금 헤맸지만 2차원 배열과 크게 다른건 없었다. 날짜를 세는 조건을 맞추는 것이 어려웠지만 많은 공부가 된 문제였다. 코드에 상세하게 주석을 달아놓았다. package gold; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.List; import java.util.Queue; import java.util.StringTokenizer; public class Main_7569..
촌수 카운트를 어떻게 증가 시켜줘야 하는지 감을 못 잡아서 꽤 오래 걸린 문제다. distance 정보를 담고 있는 배열을 추가시켜서 해당 원소 인덱스에 +1 씩 증가 시켜주는 식으로 해결했다. package sliver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.StringTokenizer; public class Main_2644 { /* * 촌수를 계산해야 하는 ..
package sliver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.StringTokenizer; public class Main_1260 { //양방향 그래프를 생성해주기 위한 list 생성 static List[] adjList; //정점 개수, 간선 개수, 탐색 시작 정점 번호 static int N, M, ..
순열을 통해서 회전순서의 가능한 모든 경우를 구하고 각 경우 별로 배열을 돌려서 최소값을 찾는 문제이다. 조건이 많고 배열을 돌릴 때 이동하는 개념을 잘 이해하지 못 해서 푸는데 굉장히 오래 걸렸다. 중심좌표를 기준으로 배열을 그려보며 풀면 이해가 된다. 코드에 주석을 달아놓았다. package hw; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main_17406_배열돌리기4 { /* * 회전순서 순열을 구한다 * 구해진 순열마다 배열을..
1로 연결된 단지를 찾아서 총 몇개인지 출력하는 문제이다. BFS를 사용하여 연결되어 있는 부분을 찾고 visited 배열로 방문처리 하는 구현 방법을 생각해보았다. package sliver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.StringTokenizer;..