본문 바로가기

카카오코테17

비밀지도(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.
실패율(Lv.1) 문제 설명 입출력 예시 요약 실패율 = 아직 클리어하지 못한 플레이어 수 / 도전한 인원 풀이 문제 해석 실패율이 높은 순서대로(서로 같은 스테이지가 있다면 스테이지 순서대로) return 접근 방식 1. 도전 인원 map 구성 → 1번 스테이지 도전인원: stages.length, 나머지 스테이지: 이전 스테이지의 도전인원 - 실패인원 2. 실패율이 같은 경우 스테이지 순서대로 담기 → Queue 형식으로 객체를 꺼내 조회하면서 stream().anyMatch() 메소드를 통해 가장 작은 스테이지인지 추가로 확인 코드리뷰 import java.util.*; class Solution { class FailRate {// 실패율과 스테이지를 담을 객체 클래스 double rate; int stage; p.. 2024. 3. 22.
다트 게임(Lv.1) 문제 설명 입출력 예시 요약 획득 가능 점수는 0~10점 S = single, D = double, T = triple * = 해당 턴 및 앞 턴의 점수 x2 (첫 번째 턴이라면 해당 점수만 적용) # = 해당 턴 점수 x(-1) 풀이 문제 해석 숫자|알파벳|특수기호 조합의 각 턴의 점수를 계산한다. 접근 방식 1. 점수 리스트 생성 → 알파벳 전의 1자리 혹은 2자리가 숫자면 intList.add() 2. 알파벳 리스트 생성 → charAt(i).isAlphabetic()이면 strList.add() 3. 특수기호 리스트 생성 → 알파벳 뒤의 1자리가 특수기호(*, #)면 symbolList.add() 코드리뷰 import java.util.*; class Solution { public int sol.. 2024. 3. 22.
크레인 인형뽑기 게임(Lv.1) H3 중제목 입출력 예시 요약 바구니에 2개의 같은 인형이 위치하면 사라짐 풀이 문제 해석 넣기 전 바구니의 개수가 1개 이상일 경우, 뽑은 인형과 비교해서 같으면 넣지 않고 바구니의 담긴 마지막 인형 제거 접근 방식 1. moves = col+1로 생각 → 열의 번호(moves[i])가 1번부터 시작 2. moves[i]에 해당하는 열의 row를 최대 배열 크기만큼 순회 → 0은 인형이 없는 것을 뜻하기 때문에 0이 아닐때까지 반복해서 찾는다. 코드리뷰 import java.util.*; class Solution { public int solution(int[][] board, int[] moves) { int count = 0; List list = new ArrayList();// 바구니로 사용할.. 2024. 3. 21.
키패드 누르기(Lv.1) 문제 설명 입출력 예시 요약 1,4,7은 왼손 3,6,9는 오른손 나머지는 가까운 손이 누른다. 풀이 문제 해석 좌표로 생각하고 오른쪽 왼쪽 이동한 칸 수 계산하기 접근 방식 1. 각 번호를 row와 col 형식의 좌표로 구성 → 1번: (0, 0), 2번: (0, 1), ... , 0번: (3, 1) 2. 왼손 오른손의 시작위치 설정 → 왼손: (3, 0), 오른손(3, 2) 3. 1,4,7은 왼손 3,6,9는 오른손 나머진 가까운 손 → 누를 번호와 각 손의 위치를 계산해서 가까운 위치를 해당 번호 좌표로 변경 코드리뷰 import java.util.*; class Solution { class HandPosition {// 손의 위치를 담을 객체 클래스 정의 int row; int col; publ.. 2024. 3. 21.