본문 바로가기

알고리즘47

실패율(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. lost 배열과 reserve 배열 기반으로 set 만들기 → reserve에 있는 번호가 lost에도 있으면 해당 번호는 삭제(여분을 잃어버렸기 때문에 +-0) 2. iterator 반복자를 통해 lost set의 앞 뒤 번호 확인 → 만약 있다면 lost 배열에서 제거 코드리뷰 import java.util.*; class Solution { public int solution(int n, int[] lost, int[] reserve) { HashSet lostSet = new HashSet(); HashSet reserveSet = new HashSet(); for(int i : los.. 2024. 3. 21.
완주하지 못한 선수(Lv.1) 문제 설명 입출력 예시 요약 참가했는데 완주하지 못한 선수의 이름 찾기 풀이 접근 방식 1. 참가자 map 만들어서 완주자 배열에 없는 이름 찾기 → hashmap과 keySet() 활용 코드리뷰 import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; HashMap part = new HashMap(); for(String str : participant) { part.put(str, part.getOrDefault(str, 0) + 1);// map에 getOrDefault를 통해 기본 value = 1로 세팅 } for(String s.. 2024. 3. 21.
소수 찾기(Lv.2) 문제 설명 입출력 예시 요약 주어진 숫자로 조합해서 만든 숫자가 소수인지 판별 풀이 문제 해석 각 숫자로 만들 수 있는 모든 숫자 만들어서 소수인지 판별 접근 방식 1. 모든 숫자 조합 구하기 → 순열에 가까운 조합방식으로 재귀함수를 통해 숫자 조합을 구한다. 2. 소수 판별 → 0과 1을 제외한 숫자 중, 2 ~ (해당 숫자-1)과 나눴을 때 나머지가 0이면 소수가 아님 → '에라토스테네스의 체'를 통해 해당 숫자의 제곱근까지만 반복문 실행 코드리뷰 import java.util.*; class Solution { HashSet set = new HashSet(); public boolean isPrime(int num) {// 소수인지 판별하는 메소드 boolean result = true; int .. 2024. 3. 21.
크레인 인형뽑기 게임(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.