카카오블라인드13 합승 택시 요금(Lv.3) 문제 설명 입출력 예시 요약 모든 지점을 하차지점으로 생각했을 때 각 지점에서 출발점(S), A, B 까지의 거리 중 최소값 구하기 풀이 접근 방식 1. 최소 비용 구하기 → 간선의 가중치가 1이 아니기 때문에 다익스트라 알고리즘을 통해 최소 비용 구하기 2. 하차지점 설정 → 합승을 했다면 반드시 하차지점이 생기고, 하차지점으로 부터 출발점, A도착점, B도착점까지의 거리를 계산한다. → 하차지점은 출발점(S)~하차지점, 하차지점~A, 하차지점~B 세 구간을 더한 값이 최소가 되는 노드로 설정한다. → 하차지점을 구하기 위해 모든 노드에 대해서 다익스트라 알고리즘을 실행한다. 코드리뷰 import java.util.*; // 인접 노드 번호와 간선의 가중치를 저장하기 위한 객체 클래스 class Nod.. 2024. 4. 16. k진수에서 소수 개수 구하기(Lv.2) 문제 설명 입출력 예시 요약 k진수에서 조건에 맞는 소수 개수 구하기 풀이 접근 방식 1. 10진수 n을 k진수로 변환 → 진수 변환 메소드 trans()를 만들어 변환 2. 조건에 맞는 소수 개수 구하기 → P는 각 자릿수에 0을 포함하지 않기 때문에 0을 기준으로 split 후 소수 판별 → isPrime() 메소드를 통해 판별 코드리뷰 import java.util.*; class Solution { String str = ""; // 진수변환 메소드 public void trans(int n, int k) { boolean run = true; List list = new ArrayList(); while(run) { list.add(0, String.valueOf(n % k));// 나눈 나머지.. 2024. 3. 25. 압축(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) 문제 설명 입출력 예시 요약 2진수 형태로 변환 후 합치기 풀이 접근 방식 1. 2진수 형태로 변환 → toBinaryString()을 통해 decimal to binary 변환 2. 정사각형 배열의 크기만큼 빈공간은 공백으로 채우기 → StringBuilder의 insert() 메소드를 통해 문자열에 문자 채우기 코드리뷰 import java.util.*; class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String s1 = ""; String s2 = ""; List list = new ArrayList(); for(int i = 0; i < arr1.length; i++) { s1 = Integer.toBinary.. 2024. 3. 22. 캐시(Lv.2) 문제 설명 입출력 예시 요약 캐시에 저장된 문자열과 비교(대소문자 구분x)해서 있다면 hit 없다면 miss 방식은 LRU 풀이 접근 방식 1. 캐시 크기로 분기점 생성 → 캐시 사이즈가 0이라면 all miss 2. 캐시에 저장된 문자열과 비교 → equalsIgnoreCase()를 통해 대소문자 구분 없이 비교 3. hit의 경우(= 캐시에 존재한다면) → remove()와 add()로 LRU 방식 구현 코드리뷰 import java.util.*; class Solution { public int solution(int cacheSize, String[] cities) { List list = new ArrayList(); int answer = 0; boolean find; for(int i = 0.. 2024. 3. 22. 이전 1 2 3 다음