목록Java/Algorithm (6)
개발
브론즈1 이길래 쉽게 풀줄알았더니 반례를 못찾아서 한참을 찾다가 결국 답코드 보고 케이스 찾음..ㅠ 1. 대각선으로 이동한다 - 직선 2회이동이 빠른경우 - 대각선이 빠른경우 2. 남은 직선을 이동한다. - 대각선이 빠른경우 (여기서 2 * w < s 조건으로 생각을함..) - 짝수인경우 대각선으로 이동 가능 - 1은 직선으로 간 뒤 나머지를 대각선으로 이동 - 직선이 빠른경우 2 * w < s 의 케이스는 대각선으로 이동하는 경우의 대소비교임.. 직선의 경우 짝수는 대각선 2회로 이동하므로, 2 *w < s 로 할 경우,, 2,3으로 들어간다면 직선이 빠른데 3으로들어가게됨,, import java.io.BufferedReader; import java.io.InputStreamReader; impor..
2178번을 먼저 풀고오면 조금만 활용하면 된다. 처음에 LinkedList를 이용해 풀어보려했으나 실패..ㅠ 각각의 Point객체에 몇번째 지나온 육지인지 count를 해주고, 가장 높은수를 반복하는 L마다 체크한다. package backjun.koi.local.ele; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class A2589{ /* 5 7 WLLWWWL LLLWLLL LWLWLWW LWLWLLL WLLWLWW */ static final BufferedReader br = new BufferedReader(new Input..
경우의 수를 생각 못해서 백트래킹을 이용해 처음에 풀음. 시간초과로 실패 [1,2,3] 이라는 배열이 있을때 [1],[2],[3],[1,2],[1,3],[2,3],[1,2,3] 모든 수를 반복해서 느릴수밖에 없음.. public class Camouflage { public static void main(String[] args) { System.out.println(solution(new String[][]{{"yellow_hat", "headgear"}, {"blue_sunglasses", "eyewear"}, {"green_turban", "headgear"}})); System.out.println(solution(new String[][]{{"crow_mask", "face"}, {"blue_s..
자바 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class A2596 { public static void main(String[] args) { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); try { int[][] arr = { {0,0,0,0,0,0}, {0,0,1,1,1,1..

다음과 같은 공백 입력일때 어떻게 입력을 받아야 하는지 몰라서 한참을 헤맸다.. 5엔터,3엔터,2엔터,3엔터,,,이런식으로 들어오는줄 알고 코드를짰다. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int N = Integer.parseInt(bf.readLine()); 그런데 실제로 입력은 5 3 한줄 2 3 1 2 1 한줄 이렇게 입력이 들어오니 bf.readLine이 String을 호출하면서 파싱에러가 생길수밖에없었다. StringTokenizer를 이용하자. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTok..
자바 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //공의갯수 int N = sc.nextInt(); //팀의수 int K = sc.nextInt(); int[] arr = new int[K]; int ballCnt = 0; for(int i = 0; i < K; i++) { arr[i] = i+1; ballCnt += i+1; } //최소로주고 남은 공의 수 int addBall = N-ballCnt; //공이 부족할경우 if(N < ballCnt) { System.out.println(-1); return; //최소로만 ..