
백준 - A -> B 16953
2023. 3. 9. 14:56
알고리즘(BOJ)/Silver
문제 풀이 출발 숫자에서 도착숫자까지 모든 경우수를 다 해보는 방법밖엔없다 DFS . BFS에서 선택해서 풀이하면되며 타겟수보다 커지면 의미없기 때문에 그 기점을 중심으로 모든 경우의 수를 탐색한다. 뒤에 1 를 넣어주는건 현재수에서 *10 한 후 +1를 하면된다. 전체 소스 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)); StringTokenizer st = new StringTokenize..

백준 - 신입사원 1946
2023. 3. 8. 14:47
알고리즘(BOJ)/Silver
문제 풀이 정렬을 하고 보면 더 쉽게 보인다. 서류 등수가 2등인 사람은 1등인 사람보다 면접 등수가 높으면 탈락이다. 3등은 1등과, 2등의 면접등수보다 높으면 탈락이다. 예제로 정렬하면 1 4 2 3 3 2 4 1 5 5 1 4 2 5 3 6 4 2 5 7 6 1 7 3 이렇게 된다. 전체 소스 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 casecount = Integer.pa..

백준 - 30 10610
2023. 2. 27. 15:51
알고리즘(BOJ)/Silver
문제 분석 30의 배수는 각 자리의 수의 합이 3의 배수여야 한다. 30의 배수이기 때문에 0도 무조건 하나 이상은 있을것이다 해당의 경우에만 체크하고 그외는 중지시칸다. 가능하다면 각자리수에 최대의 수를 배치한다. 전체 소스 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 str = br.readLine(); //String[] array = new String[str.length()]; int[] te..

백준 - 주유소 13305
2023. 2. 23. 23:33
알고리즘(BOJ)/Silver
문제 분석 해당 주유소보다 저렴한 주유소가 낮을때까지 나오는 거리는 곱해서 더해준다. 더 낮은 주유소가 나오기 전까지는 가격을 바꿀 이유가 없다. 전체 소스 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()); long[] far = new long[repeat - 1]; long[] oil = new long[repeat]; StringTo..

백준 - 라디오 3135
2023. 2. 16. 17:29
알고리즘(BOJ)/Silver
문제 분석 처음지점 - 마지막 지점 의 값과 바로가기 버튼 - 마지막 지점 의 값을 비교만 하면된다. 절대값으로 비교해야 하기에 Math.abs를 이용했다. 전체 소스 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)); StringTokenizer st = new StringTokenizer(br.readLine()," "); int start = Integer.parseInt(st.nextTok..

백준 - 거스름돈 14916
2023. 2. 13. 20:10
알고리즘(BOJ)/Silver
문제 분석 거스름돈의 홀/짝 부터 분리했다. 그 이유는 홀수일경우 5의 경우도 홀수일수 밖에없다. 17 -> 5가 3개 11 -> 5가 1개 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)); int input = Integer.parseInt(br.readLine()); int five = 0; int two = 0; int result = 0; i..

백준 - ATM 11399
2023. 2. 11. 12:48
알고리즘(BOJ)/Silver
문제분석 배열을 정렬해서 중복해서 더해주면 되는 쉬운 문제였다. 전체소스 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)); int repeat = Integer.parseInt(br.readLine()); StringTokenizer st = new StringTokenizer(br.readLine()," "); int[] array = new int[repeat]; for(int i=0; i

백준 - 섬의 개수 4963
2023. 2. 10. 15:53
알고리즘(BOJ)/Silver
문제 분석 2차배열에서 1인수중에 인접해있는것만 체크하면 되는 쉬운문제였다. 대각선도 포함시키는게 해당 문제의 키포인트라고 생각한다. 방문여부만 체크해서 중복되지 않게 했다. 전체 소스 import java.util.*; import java.io.*; public class Main { static int[][] array; static boolean[][] visited; static int x=1,y=1; static int cnt=0; public static void bfs(int a, int b) { Queue q = new LinkedList(); q.offer(new int[] {a,b}); int[] x_move = {-1,1,0,0}; int[] y_move = {0,0,-1,1}; i..

백준 - 읽어버린 괄호 1541
2023. 2. 10. 14:41
알고리즘(BOJ)/Silver
문제 분석 -가 나오기 전까지는 계속 더 해준다. -가 나오게 되면 지금까지 나온수까지만 더 해주고 그 이후로는 전부다 빼준다. 마지막 숫자는 그전에 -가 한번이라도 나왔으면 빼주고 그렇지 않다면 더해준다. -유무에 따라 빼주는건 10+20+30-10-20-30+10 이 있다고 했을 때 한번이라도 -가 나온다면 그 뒤는 전부 -가 된다는 것을 알 수 있다 ( -뒤로 나오는+는 더해준다음에 빼주면되고 -뒤에 나오는 -는 그대로 빼주면 되니까) 한번이라도 나오는 경우 인 케이스는 boolean을 이용해 체크해줬다. 전체 소스 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws..

백준 - 로프 2217
2023. 2. 9. 18:50
알고리즘(BOJ)/Silver
문제 분석 3개의 로프 1,10,15 가 있다고 가정했을 때 나올 수 있는 수가 1개 (1), (10), (15) 2개 (2,20), (2,30), (20,30) 3개 (3,30,45) 라고 생각하고 각 n개의 경우의 수 중 괄호안에 있는수의 최소가 최대인 경우 즉, 1개일 때는 15 2개일때는 20 3개일 때는 3이 되겠다. 이런식으로 해서 n개가 될 때마다 내림차순으로 했는데 시간초과가 떴다. 그래서 다른식으로 생각한 것이 오름차순으로 정렬하고 n번째에 x값을 곱해주는 거였다. 이말은 1x3 , 10x2 , 15x1 이다 이게 될 수 있는 이유는 가장 큰수부터 필요한 수 인데, 2개가 될경우 가장큰수에 2를 곱해봤자 그 보다 작은수의 2배가 더 작기 떄문이다 10x2 , 15x2 이면 더 작은수인 1..