본문 바로가기

카카오코테17

합승 택시 요금(Lv.3) 문제 설명 입출력 예시 요약 모든 지점을 하차지점으로 생각했을 때 각 지점에서 출발점(S), A, B 까지의 거리 중 최소값 구하기 풀이 접근 방식 1. 최소 비용 구하기 → 간선의 가중치가 1이 아니기 때문에 다익스트라 알고리즘을 통해 최소 비용 구하기 2. 하차지점 설정 → 합승을 했다면 반드시 하차지점이 생기고, 하차지점으로 부터 출발점, A도착점, B도착점까지의 거리를 계산한다. → 하차지점은 출발점(S)~하차지점, 하차지점~A, 하차지점~B 세 구간을 더한 값이 최소가 되는 노드로 설정한다. → 하차지점을 구하기 위해 모든 노드에 대해서 다익스트라 알고리즘을 실행한다. 코드리뷰 import java.util.*; // 인접 노드 번호와 간선의 가중치를 저장하기 위한 객체 클래스 class Nod.. 2024. 4. 16.
거리두기 확인하기(Lv.2) 문제 설명 입출력 예시 요약 대기실별로 맨해튼 거리가 2 이하인 응시자가 있는지 확인(단, 파티션이 막고 있는 경우 제외) 풀이 접근 방식 1. 응시자들의 맨해튼 거리가 1인 경우 → false 리턴 2. 응시자들의 맨해튼 거리가 2인 경우 → 같은 방향으로 두 칸 떨어져 있는 경우 응시자들 사이에 빈 공간(O)이 있다면 false → 대각선으로 떨어져 있는 경우 응시자의 (위쪽, 왼쪽) / (위쪽, 오른쪽) / (아래쪽, 왼쪽) / (아래쪽, 오른쪽) 위치에 빈 공간(O)이 있다면 false 코드리뷰 import java.util.*; class Solution { int N, M; String[][] maps; // 상하좌우 한 칸씩 탐색을 위한 배열 int[] dirY1 = {-1, 1, 0, 0}.. 2024. 4. 16.
n진수 게임(Lv.2) 문제 설명 입출력 예시 요약 양의 정수(0포함) 하나씩 n진수로 변환 후 내 순서의 숫자로만 이루어진 배열 만들기 풀이 접근 방식 1. n진수 변환 메소드 trans() → 0부터 1씩 증가시키며 n진수로 변환 → 10~15는 A~F로 변환 2. 내 차례에 해당하는 숫자만 고르기 → 인원수가 m이라면, int i = 0부터 시작하는 for문에서 i를 m으로 나눈 나머지에 1을 더한 수 (i % m + 1)가 자신의 차례와 같은지 비교 3. 턴 수가 넘어간 문자는 자르기 → t번 차례까지만 구하면 되므로, 그 이상의 문자들은 substring으로 제거 코드리뷰 import java.util.*; class Solution { int max;// 변환할 n진수의 max length public String .. 2024. 3. 28.
압축(Lv.2) 문제 설명 입출력 예시 요약 현재 입력과 일치하는 가장 긴 단어의 색인 번호를 출력하고, 현재 입력에 다음 글자 하나를 더해 사전에 추가한다. 풀이 접근 방식 1. 크기가 1인 단어들로 사전 초기화 → char 타입의 변수에 'A'를 저장 후 'Z'까지 ++ 해가며 map에 담는다. 2. 사전에서 현재 입력과 일치하는 가장 긴 문자열 찾기 → 주어진 문자열 msg의 길이부터 하나씩 줄여가며 사전에서 일치하는 단어 찾기(완전 탐색) 3. 사전에서 일치하는 가장 긴 문자열을 자르고 난 후 남은 msg의 길이 확인 → 0인 경우 while문 탈출 → 1인 경우 map.get(msg)를 통해 찾은 value를 list에 담고 while문 탈출 → 2 이상인 경우 msg의 첫 번째 문자를 잘라서 현재 입력과 합친.. 2024. 3. 25.
뉴스 클러스터링(Lv.2) 문제 설명 입출력 예시 요약 각 문자열에 대해 크기가 2인 문자열의 집합을 구한 후 서로 비교 풀이 접근 방식 1. 문자열로 집합 만들기 → makeSet() 메소드를 통해 집합 리스트 생성 → Character.isAlphabetic()으로 알파벳만 포함 2. 교집합 구하기 → .equalsIgnoreCase()를 통해 대소문자 구분 없이 비교 (완전 탐색) 3. 합집합 구하기 → 두 개의 집합 리스트를 더한 union에서 교집합 원소들 제거 → stream().anyMatch()를 통해 비교 후 제거 코드리뷰 import java.util.*; class Solution { List list1 = new ArrayList(); List list2 = new ArrayList(); List inter .. 2024. 3. 24.
숫자 문자열과 영단어(Lv.1) 문제 설명 입출력 예시 요약 문자를 숫자로 바꾸기 풀이 접근 방식 1. 문자를 숫자로 바꾸기 → replaceAll() 메소드를 통해 변환 코드리뷰 import java.util.*; class Solution { public int solution(String s) { // 숫자를 문자형태로 담은 배열 만들기 String[] arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}; for(int i = 0; i < arr.length; i++) { s = s.replaceAll(arr[i], String.valueOf(i));// repalceAll()을 통해 숫자로 변환 } int answ.. 2024. 3. 22.