코딩테스트/Java 109

[JAVA] 백준 돌다리

BFS를 활용하는 문제이다. BFS를 활용한다면 큐를 생각해낸다. 그리고 while문을 사용하여 계속해서 뻗어나가는 그림을 생각하자. import java.awt.Point; 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 { static int A, B, N, M, result = 0; static boolean[] visited = new boolean[100001]; public static voi..

[JAVA] 백준 양

dfs 탐색을 통해서 네방향으로 나아간다. grid에 양과 늑대를 반영하지 않고 count값만 저장하여 최종결과를 도출할 때에 활용했다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int R, C; static int wolf = 0, sheep = 0; static int resultWolf = 0, resultSheep = 0; static boolean visited[][]; static char[][] grid; public static void main(String[..

[JAVA] 백준 동전1

동적프로그래밍(DP) 문제이다. dp[i] = dp[i] + dp[i - coin]이다. 문제와 같은 입력이 주어졌을 때 1원 짜리 동전으로 1원 부터 10원까지 만들 수 있는 가짓수를 구한다. 2원 짜리 동전으로 2원 부터 10원까지 만들 수 있는 가짓수를 구한다. (1원으로 구한 값을 이용하여 구한다.) 5원 짜리 동전으로 5원 부터 10원까지 만들 수 있는 가짓수를 구한다. (2원으로 구한 값을 이용하여 구한다.) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.StringTokenizer; public..

[JAVA] 프로그래머스 폰켓몬

HashSet을 이용해 중복제거하는 문제이다. 처음 문제를 봤을때 dfs combination 문제인줄 알고 dfs로 모두 구했더니 시간초과가 발생했다. 다시 생각해보니 nums.length/2 미만인경우 아니라면 최대한 많이뽑아도 nums.length/2개이니 해당 값을 return해주면 되는 간단한 문제였다. if문을 할때 종이로 쓰는 습관을 들여야겠다. import java.util.HashSet; import java.util.Set; class Solution { static int[] result; static int max=0; public int solution(int[] nums) { int answer = 0; result = new int[nums.length/2]; Set s = n..

[JAVA] 백준 마법사 상어와 토네이도

간단한 구현문제이다. 코드에 대한 욕심때문에 방향에 대한 dx,dy만 정해놓고 나머지는 회전하면서 전개해 나가려고 코드를 작성하였는데, 방향에 따른 왼쪽 오른쪽 구분이 일관되게 진행할 수 없어서 중간에 모래가 사라지게 되었다. 잘못된 코드는 아래 첨부하겠다. 더보기 import jdk.swing.interop.SwingInterOpUtils; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int N; static int[][] grid; static int[] dr = {0, 1, 0..

[JAVA] 백준 새로운게임2

Deque사용 + 이차원배열을 결합한 문제이다. 구현 문제인데, 경계값 체크를 가장자리를 파란색으로 칠해줌으로써 해결할 수 있는 아이디어가 좋았다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Deque; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamR..

[JAVA] 백준 게리맨더링2

https://www.acmicpc.net/problem/17779 dfs문제인것처럼 보였으나 완전탐색으로 구현하는 문제였다. 경계값 비교 및 break문을 이용하기 위해 역방향으로 탐색하는 방식이 필요했다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int N; static int[][] grid; static int totalPeople = 0; static int min = Integer.MAX_VALUE; public static void main(String[] args)..