본문 바로가기

Algorithms

(98)
[Python] Progrmmers 코딩테스트 연습 : 순위 (그래프) --- 문제 --- 문제 설명 n명의 권투선수가 권투 대회에 참여했고 각각 1번부터 n번까지 번호를 받았습니다. 권투 경기는 1대1 방식으로 진행이 되고, 만약 A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다. 심판은 주어진 경기 결과를 가지고 선수들의 순위를 매기려 합니다. 하지만 몇몇 경기 결과를 분실하여 정확하게 순위를 매길 수 없습니다. 선수의 수 n, 경기 결과를 담은 2차원 배열 results가 매개변수로 주어질 때 정확하게 순위를 매길 수 있는 선수의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 선수의 수는 1명 이상 100명 이하입니다. 경기 결과는 1개 이상 4,500개 이하입니다. results 배열 각 행 [A, B]는 A 선수가 B..
[Java] 백준 알고리즘 20055번 문제 : 삼성 SW 역량 테스트 기출 문제 - 컨베이어 벨트 위의 로봇 (Simulation, 구현) --- 문제 --- --- 코드 --- import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.util.Arrays; import java.util.LinkedList; public class Bj20055 { static int N,K; static int result, zero_cnt; static int[] belt; static boolean[] robot; static int stoi(String s) { return Integer.parseInt(s); } static void move() { // fi..
[Java] 백준 알고리즘 19236번 문제 : 삼성 SW 역량 테스트 기출 문제 - 청소년 상어 (DFS, 깊이 우선 탐색) --- 문제 --- --- 코드 --- 이 문제의 특이 사항은 다음과 같습니다. dfs 의 한 스텝이 끝나고 이전 스텝으로 돌아올 때, 원래의 공간, 물고기 상태로 다시 돌아와야 하는데, 이 부분이 매우 복잡합니다. 따라서 한 스텝마다 공간과 물고기의 상태를 따로 복사해서 그 복사한 정보를 dfs 마다 넘겨주는 상태로 코드를 짰습니다. 메모리를 더 쓰게 되기는 하지만, 애초에 문제의 표본이 N은 4이고 (4x4 공간), dfs 의 스텝(깊이)이 많은 편이 아니기 때문에(최대 15개) 메모리 제한에 걸리지 않는다고 판단했습니다. 상어는 방향에 있는 칸으로 이동할 수 있는데, 한 번에 여러 개의 칸을 이동할 수 있다. 상어가 물고기가 있는 칸으로 이동했다면, 그 칸에 있는 물고기를 먹고, 그 물고기의 방향을..
[Java] 백준 알고리즘 16234번 문제 : 삼성 SW 역량 테스트 기출 문제 - 인구 이동 (BFS, 너비 우선 탐색) --- 문제 --- --- 코드 --- import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; // 1. 연합 국가들을 묶는 클래스 class United{ ArrayList contries; int sum,y,x; // 1-1. 시작 나라 기준으로 초기화 United(int y,int x,int self){ this.contries = new ArrayList(); this.sum = sel..
[Java] 백준 알고리즘 16236번 문제 : 삼성 SW 역량 테스트 기출 문제 - 아기 상어 (BFS, 너비 우선 탐색) --- 문제 --- --- 코드 --- BFS 로 먹이로 가능한 현재지점에서 가장 가까운 후보군들을 다 찾고, PriorityQueue 성질을 이용해서, 그 후보군들 중에 가장 행,렬이 작은 물고기를 선별하면 됩니다. 이와 같은 과정을 먹을 물고기가 있을 때까지 반복하면 됩니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; import java.util.ArrayList; import java.util.LinkedList; import java.util.PriorityQueue; import java.util.Queue; /..
[Java] 백준 알고리즘 14891번 문제 : 삼성 SW 역량 테스트 기출 문제 - 톱니바퀴 (Simulation, 시뮬레이션) --- 문제 --- --- 코드 --- LinkedList 를 활용해서 톱니 바퀴가 반시계 방향으로 이동하면 첫번째 값을 맨 뒤로 옮기고 시계 방향으로 이동하면 맨 뒤의 값을 첫번째로 옮기면서 회전 시켜 주었습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.io.IOException; import java.util.LinkedList; public class Bj14891 { public static LinkedList[] wheels; public static boolean[] between; public static void main(String..
[Java] 백준 알고리즘 14890번 문제 : 삼성 SW 역량 테스트 기출 문제 - 경사로 (Simulation, 시뮬레이션) --- 문제 --- --- 코드 --- 행마다 , 열마다 다음 조건에 맞춰서 검사를 진행해주면 된다. 1. 이전 숫자 - 다음 숫자를 구한다 1-1. 차이가 -1 이면 다음 숫자가 작은 것이므로, 앞으로 이 작은 숫자가 L-1 개가 더 나와야 함 (chekc = L-1) check 가 0이 안되면 못가는 걸로 결론 1-2. 차이가 1 이면 다음 숫자가 큰 것이므로, 지금까지 이전 숫자가 L가 이상 나왔는지 확인 (path>=L) 안나왔으면 길 못가는 걸로 결론 1-3. 차이가 0 이면 이전 숫자의 길이 늘어난 것이므로 길 추가 (++path) 1-4. 차이가 -1 보다 작거나 1보다 큰 경우, 경사로를 못 놓으므로 길 못 가는 걸로 결론 짓기 2. 그 행 혹은 열이 결국 지나가는 게 가능하다고 결론 나면..
[Java] 백준 알고리즘 14889번 문제 : 삼성 SW 역량 테스트 기출 문제 - 스타트와 링크 (DFS ,깊이 우선 탐색) --- 문제 --- --- 코드 --- import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Bj14889 { public static int N, half, total, min; public static int[][] table; public static boolean[] visited; public static int stoi(String s) { return Integer.parseInt(s); } public static void main(String[] args) throws IOException { ..

728x90
반응형