본문 바로가기

알고리즘

(63)
[Java] 2020 카카오 인턴십 코딩테스트 문제 : [1차] 추석 트래픽 (시뮬레이션, Simulation) --- 문제 --- 추석 트래픽 이번 추석에도 시스템 장애가 없는 명절을 보내고 싶은 어피치는 서버를 증설해야 할지 고민이다. 장애 대비용 서버 증설 여부를 결정하기 위해 작년 추석 기간인 9월 15일 로그 데이터를 분석한 후 초당 최대 처리량을 계산해보기로 했다. 초당 최대 처리량은 요청의 응답 완료 여부에 관계없이 임의 시간부터 1초(=1,000밀리초)간 처리하는 요청의 최대 개수를 의미한다. 입력 형식 solution 함수에 전달되는 lines 배열은 N(1 ≦ N ≦ 2,000)개의 로그 문자열로 되어 있으며, 각 로그 문자열마다 요청에 대한 응답완료시간 S와 처리시간 T가 공백으로 구분되어 있다. 응답완료시간 S는 작년 추석인 2016년 9월 15일만 포함하여 고정 길이 2016-09-15 hh..
[Java] 2021 카카오 인턴십 코딩테스트 문제 : 숫자 문자열과 영단어(문자열/String) --- 문제 --- 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. --- 코드 --- class Solution { public static String[] numbers = { "zero","one","two", ..
[Java] 백준 알고리즘 19236번 문제 : 삼성 SW 역량 테스트 기출 문제 - 청소년 상어 (DFS, 깊이 우선 탐색) --- 문제 --- --- 코드 --- 이 문제의 특이 사항은 다음과 같습니다. dfs 의 한 스텝이 끝나고 이전 스텝으로 돌아올 때, 원래의 공간, 물고기 상태로 다시 돌아와야 하는데, 이 부분이 매우 복잡합니다. 따라서 한 스텝마다 공간과 물고기의 상태를 따로 복사해서 그 복사한 정보를 dfs 마다 넘겨주는 상태로 코드를 짰습니다. 메모리를 더 쓰게 되기는 하지만, 애초에 문제의 표본이 N은 4이고 (4x4 공간), dfs 의 스텝(깊이)이 많은 편이 아니기 때문에(최대 15개) 메모리 제한에 걸리지 않는다고 판단했습니다. 상어는 방향에 있는 칸으로 이동할 수 있는데, 한 번에 여러 개의 칸을 이동할 수 있다. 상어가 물고기가 있는 칸으로 이동했다면, 그 칸에 있는 물고기를 먹고, 그 물고기의 방향을..
[Java] 백준 알고리즘 14888번 문제 : 삼성 SW 역량 테스트 기출 문제 - 연산자 끼워넣기 (BFS ,너비 우선 탐색) --- 문제 --- --- 코드 --- import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Sw14888 { public static int stoi(String s) { return Integer.parseInt(s); } public static int[] numbers, operates; public static int N, result; public stati..
[Java] 백준 알고리즘 13458번 문제 : 삼성 SW 역량 테스트 기출 문제 - 시험감독 (Greedy Algorithm, 그리디 알고리즘) --- 문제 --- --- 코드 --- import java.util.Scanner; public class Bj13458 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); long[] stu = new long[N]; for(int i=0; i
[Java] 백준 알고리즘 12100번 문제 : 삼성 SW 역량 테스트 기출 문제 - 2048(Easy) (DFS, 깊이 우선 탐색) --- 문제 --- --- 코드 --- import java.util.Scanner; public class Bj12100 { public static int N; public static int[][] map; // 방향 왼쪽부터 상 하 좌 우 public static final int[][] DIRECTIONS = {{-1,0},{1,0},{0,-1},{0,1}}; public static int max_value; public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 1. Initialize N = sc.nextInt(); map = new int[N][N]; max_value = 0; // 1-1. N이 1..
[Java] SW Expert Academy 2112번 문제: [모의 SW 역량테스트] 보호 필름 (DFS, 깊이 우선 탐색) --- 문제 --- 2112. [모의 SW 역량테스트] 보호 필름 --- 코드 --- 이 경우는 다차원 배열의 깊은 복사 법을 알면 더 빠르게 풀 수 있는 문제였습니다. 얕은 복사는 기존의 원래의 배열의 값도 같이 변경되기 때문에 제대로된 계산이 어렵기 때문입니다. 저는 2차원 배열의 깊은 복사로 다음과 같은 방법을 사용했습니다. // 3-1-1. 기존 단면 복사 int[][] copy =new int[D][W]; for(int r=0; r
[Java] SW Expert Academy 1953번 문제: [모의 SW 역량테스트] 탈주범 검거 (BFS, 너비 우선 탐색) --- 문제 --- 1953. [모의 SW 역량테스트] 탈주범 검거 --- 코드 --- 가능한 도보의 갯수의 범위를 1칸씩 늘려가며 체크하는 BFS 문제 인데, 특수하게 고려할 것이 많은 문제이다. 고려할 것은 이전에 방문했던 것은 다시 방문할 필요가 없는 것 시간 L을 넘지 않기 위해 같은 시간에 방문하는 위치의 갯수(cand->turn)를 저장시켰다가 그 만큼 확인후에(turn==0) 시간을 다음 시간으로(++hour) 변경해야하는 것 위로 움직였을 때 못 가는 터널이 있고(아래 방향으로 뚫리지 않은 터널이 있는 경우), 아래로 움직였을 때 못가는 터널이 있고 좌,우도 똑같이 못가는 터널을 고려해주어야 하는 것 이 3가지 고려 점들이 문제를 더욱 어렵게 만들어 주었습니다. 제가 푼 풀이는 다음과 같습..

728x90
반응형