본문 바로가기

카카오블라인드13

실패율(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) 문제 설명 입출력 예시 요약 1단계 ~ 7단계에 맞게 new_id 수정하기 풀이 및 코드 리뷰 접근 방식 정규화를 통해 조건에 맞게 수정한다. 소스코드 import java.util.*; class Solution { public String solution(String new_id) { String answer = ""; answer = new_id.toLowerCase();// 1단계. 대문자를 소문자로 변경 answer = answer.replaceAll("[^a-z0-9-_.]", "");// 2단계. 영어소문자, 숫자, '-', '_', '.' 외에 전부 제거 answer = answer.replaceAll("[..]+", ".");// 3단계. 2개 이상의 온점('.')을 하나로 변경 if(a.. 2024. 3. 21.
메뉴 리뉴얼(Lv.2) 문제 설명 입출력 예시 요약 각 order를 course에 해당하는 길이로 조합해서 개수가 가장 많은 조합을 return 풀이 문제 해석 각 order를 알파벳순으로 정렬해서 course에 해당하는 길이로 조합을 만들어 개수가 가장 많은 조합 구하기 접근 방식 1) 알바벳순으로 정렬 → .toCharArray()를 통해 String을 char[]로 변환 후 Arrays.sort(char[])를 통해 알파벳순으로 정렬 2) 재귀함수를 사용해 해당 order를 가지고 조합 구하기 → "AC"와 "CA"는 서로 같으므로 알파벳순으로 정렬 후 조합 구하기 3) 개수가 가장 많은 요소 구하기 → Collections.max(map.values())를 통해 max 구해서 비교 코드 리뷰 import java.uti.. 2024. 3. 19.
개인정보 수집 유효기간(Lv.1) 문제 설명 입출력 예시 요약 주어진 오늘 날짜와 비교해 유효기간이 만료된 약관의 번호를 담은 int 배열 return 풀이 문제 해석 해당 약관의 개월수를 더해 유효기간을 계산하고 오늘 날짜와 비교해서 지났으면 true 아니면 false 접근 방식 1) 약관 개월수를 반영한 유효기간 구하기 → 12보다 큰 경우 year += 1, 약관 개월수 -= 12 → 약관 개월수 더한 후 해당 날짜의 day -= 1 2) 경계값 기준으로 년, 월, 일 세팅 → month가 12보다 크거나 0인 경우 → day가 28보다 크거나 0인 경우 3) 오늘 날짜와 비교해서 유효한지 판단 → LocalDateTime 객체 활용 코드 리뷰 import java.util.*; import java.time.*;// LocalDa.. 2024. 3. 19.
신고 결과 받기(Lv.1) 문제 설명 입출력 예시 요약 k번 이상 신고당한 유저는 이용이 정지되고, 해당 유저를 신고한 유저에게 신고 메일이 발송된다. id_list 순서대로 신고 메일을 받은 횟수를 return 풀이 문제 해석 중복된 신고는 제외하고 신고 받은 횟수로 이용정지 유저를 구하고 해당 유저를 신고한 유저의 value += 1 접근 방식 1) report 중복 제거 → set으로 담아서 중복 제거 2) 이용 정지 유저 구하기 → 신고 받은 유저 map 생성 후 k와 비교해서 set에 저장 3) 이용 정지 유저를 신고한 유저의 value += 1 → report의 요소를 split 해서 [1]번째 index에 해당하는 유저가 신고당한 유저라면, [0]번째 index에 해당하는 유저의 value += 1 코드 리뷰 impo.. 2024. 3. 19.