- 알고리즘 분류 : DFS - 사용 언어 : JAVA - 문제 요점 N과 M(1) 문제에서 같은 수도 중복될 수 있다. 라는 부분이 추가된 문제. 수를 선택할 때 처음부터 탐색하면 쉽게 풀이 가능 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static int N, M; // 출력을 한번에 하기 위해 사용 public static StringBuilder sb = new StringBuilder(); // 조합 계산 public static ..
코테 공부
- 알고리즘 분류 : DFS, 백트래킹 - 사용 언어 : JAVA DFS와 백트래킹을 이용하여 조합을 구하는 문제입니다. 이전 게시글(N과 M(1))과 다른 부분은 호출한 함수에서 수를 선택할 때 현재 숫자에서 +1부터 시작한다는 부분입니다. 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static int N, M; public static boolean[] visited; // 조합 계산 public static void calcCombi(i..
- 알고리즘 분류 : DFS, 백트래킹 - 사용 언어 : JAVA DFS와 백트래킹을 이용하여 순열을 구하는 문제입니다. 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static int N, M; public static boolean[] visited; public static void calcPerm(int count, int[] arr) { // 뽑은 갯수가 M이랑 같으면 // 출력후 함수 종료 if(count >= M) { for(int..
- 알고리즘 분류 : 구현 - 사용 언어 : JAVA - 문제 요점 10진수로 받은 데이터를 k진법으로 변환할 수 있어야 한다. 소수를 판별할 줄 알아야한다. (모르시는 분들은 https://ajdahrdl.tistory.com/147 참고해주세요) k진법으로 변환하다보니 숫자의 길이가 길어질 수 있다. → Long으로 선언 소스 설명은 주석을 참고해주세요. public class Main { // 긴 숫자가 들어올 수 있으니 long으로 선언 public static boolean isPrime(long num) { // 1은 소수가 아님. if(num == 1) { return false; } // num까지 안보고 제곱근까지만 봐도 됨. for(int i=2; i 0) { changeNum = (n..
- 알고리즘 분류 : 구현 - 사용 언어 : JAVA - 문제 요점 한 사람이 같은 대상에게 여러번 신고한 것은 1번으로 간주한다. 필자는 바로 떠올린 알고리즘으로 풀어버렸는데, HashMap을 사용하면 훨씬 간결하고 편하게 구현할 수 있을 것이다. 소스 설명은 주석을 참고해주세요. import java.util.ArrayList; import java.util.StringTokenizer; public class Main { public static int[] solution(String[] id_list, String[] report, int k) { // 각 사용자가 누구를 신고했는 지 저장해두는 리스트 ArrayList reportList = new ArrayList(); // 각 사용자가 받은 ..
- 알고리즘 분류 : 구현, 조합 - 사용 언어 : JAVA - 문제 요점 유지시킬 치킨 집의 갯수가 주어지니, 조합을 이용하여 치킨 집의 경우의 수를 구한다. 경우마다 집을 기준으로 치킨집의 최단경로를 구한다. 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.StringTokenizer; public class Main { // N : 도시의 크기 (NxN) // M : 유지시킬 치킨집의 갯수 public static int N,..
- 알고리즘 분류 : 다익스트라 - 사용 언어 : JAVA - 문제 요점 다익스트라를 이용하여 만나는 벽의 최소 수를 구하는 문제 DFS를 이용하여 풀어봤는데, 이 경우 시간초과로 발생했다. - DFS import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { // 상하좌우 이동 public static int[] amove = {-1, 0, 1, 0}; public static int[] bmove =..
- 알고리즘 분류 : 그리디 - 사용 언어 : JAVA - 문제 요점 점수를 입력받는 것이 아닌, 등수를 입력받는 것임 (중요) 나를 제외한 모든 참가자와 비교를 해야함. 서류 등수와 면접 등수가 있음. 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다. 서류 등수를 배열의 인덱스로 두고, 배열의 값을 면접 등수로 둔다. 이해가 잘 안됐던 문제이며, 이중 반복문을 쓰면 시간 제한으로 인해 쉽지 않았던 문제이다. 아래의 블로그를 보고 방향성을 잡았다. 참고한 블로그 : https://kosaf04pyh.tistory.com/113 [알고리즘 문제] 백준1946 - 신입사원 문제는 신입사원들의 서류/면접 성적이 있을 때 이 ..