
백준 - 크게 만들기 2812
2023. 2. 12. 22:25
알고리즘(BOJ)/Gold
문제 풀이 고정된 길이를 제외한 자리에서 제일큰 수가오면 그 앞에는 다 잘라주고, 가장 큰수는 버퍼에 넣어줬다. 전체소스 package test; 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(), " "); int size = Integer.parseInt(st.nextToken()); int del = Integer..

백준 - 카드 정렬하기 1715
2023. 2. 8. 14:43
알고리즘(BOJ)/Gold
문제풀이 처음에는 배열로 하려고 했으나 배열을 객체까지 삭제하는 방법은 익숙하지 않기 떄문에 List로 했다. 하지만 매번 정렬을 해줘야 해서 10만개를 처리할 때 약 5초가 소요되서 시간초과가 되었다. 결국 항상 정렬이 되는 우선순위 큐를 이용했다. 전체소스 package test; import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); long repeat = Integer.parseInt(br.readLine()); Pr..

백준 - 빗물 14719
2023. 2. 5. 21:44
알고리즘(BOJ)/Gold
문제 분석 문제 이해도 쉽고 풀이과정을 생각하는게 재밌는 문제였다. 첫열과 마지막열에는 빗물이 찰 수 없으니 넘겨주고 두번째 열부터 왼쪽과 오른쪽에 자신보다 큰 벽이 있는지 확인했다. 일부러 2차배열을 선언하지 않고 풀려고 노력했다. 전체소스 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); int x = In..

백준 - 고층건물 1027
2023. 2. 4. 18:45
알고리즘(BOJ)/Gold
문제풀이 기울기 : (고정건물 - 가변건물) / 거리 기울기가 바로 옆건물보다 커지는것을 체크한다. 왼쪽 바로옆인 -2 -2.5 는 -2보다 작으니까 패스 이렇게 왼쪽, 오른쪽으로 구분지어서 카운팅 해줬다. package test; import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int repeat = Integer.parseInt(br.readLine()); StringTokenizer st = new StringT..

백준 - 신기한 소수 2023
2023. 2. 3. 17:26
알고리즘(BOJ)/Gold
문제 분석 한자리 소수는 2,3,5,7 이 있다. 맨 앞자리에 올 수 있는수도 이것 뿐이다. 4개의 경우에만 재귀를 호출하도록 했다. 재귀는 1~9까지 한자리씩 붙여가며 소수인지 판단했다. 소수인지 판단은 처음에는 1과 자기자신의 수가 오기전까지 나눠지는 수가 있는지 했는데, 제곱근으로 시간을 단축시킬 수 있다고 하여 Math.sqrt를 사용했다. 전체소스 package test; import java.util.*; import java.io.*; public class Main { static int size; public static boolean check(int input) { for(int i=2; i

백준 - 이모티콘 14226
2023. 2. 2. 16:31
알고리즘(BOJ)/Gold
문제 분석 처음에는 복사+붙여넣기가 세트니까 2배 만큼 증가시키면서 카운트를 2 증가시켰다. 그랬더니 실패가 됐다. 혹시 이 차이를 아시는 분은 댓글 남겨주세요,, q.offer(new int[] {2*value,value,cnt+2}); q.offer(new int[] {value+clip,clip,cnt+1}); q.offer(new int[] {value,value,cnt+1}); q.offer(new int[] {value+clip,clip,cnt+1}); 전체소스 package test; import java.util.*; import java.io.*; public class Main { public static void main(String args[]) throws Exception{ Bu..

백준 - 감소하는 수 1038
2023. 2. 2. 14:11
알고리즘(BOJ)/Gold
문제 분석 문제를 이해하는게 생각보다 어려웠다. 감소하는 수는 알겠는데 몇번째 라는게 이해가 안갔는데, 단순히 감소하는수들을 나열해 놓고 몇번째에 있냐는 말이였다. 1~9까지는 그냥 1~9까지고 10 20 21 30 31 32 40 41 42 - 18번째 이말이였다. 처음에는 1개, 2개, 3개 씩늘어나고 100의자리는 10의자리의 수만큼 합쳐지는 규칙성을 발견했지만, 구현하는데 어려움을 겪었다. 그래서 987654321 까지 올 수 있는 감소하는 수는 모조리 배열에 넣어서 찾는 형태로 구현했다. 전체소스 import java.io.*; import java.util.*; public class Main { static long[] array; static int p = 0; private static ..

백준 - Contact 1013
2023. 1. 29. 10:44
알고리즘(BOJ)/Gold
전체소스 package test; import java.util.*; import java.io.*; public class Main { public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String vega = "(100+1+|01)+"; int repeat = Integer.parseInt(br.readLine()); for(int t=0; t

백준 - 연구소2 17141
2023. 1. 28. 10:58
알고리즘(BOJ)/Gold
DFS public static void dfs(int x,int y) { if(y==size) { y=0; x++; } if (cnt == virus) { bfs(array); } Stack stack = new Stack(); while(x= size) continue; if (arr[nx][ny] == 0 && visited[nx][ny] == false) { q.offer(new int[] { nx, ny, time + 1 }); arr[nx][ny] = time + 1; visited[nx][ny] = true; } } } int max = -9999999; boolean check=true; for (int i = 0; i < size; i++) { for (int j = 0; j < size..

16236 - 아기상어 (BFS)
2023. 1. 14. 10:26
알고리즘(BOJ)/Gold
순서도 어떤 물고기를 먼저 먹을지에 대한 순서도 이다. 그에대한 소스 부분이다. public static void bfs() { int[] x_move = { -1, 1, 0, 0 }; int[] y_move = { 0, 0, -1, 1 }; boolean[][] visited = new boolean[size][size]; int length = Integer.MAX_VALUE; int target_x = Integer.MAX_VALUE, target_y = Integer.MAX_VALUE; boolean check = false; while (!q.isEmpty()) { int point[] = q.poll(); int x = point[0]; int y = point[1]; int walk = po..