알고리즘/PROGRAMMERS42 프로세스(Lv.2) 문제 설명 입출력 예시 요약 location에 해당하는 index의 prioties 요소가 몇 번째로 출력되는지 구하기 풀이 접근 방식 1. priority와 location을 갖는 객체 생성 → Priority class 객체 생성 2. Queue 형태로 객체 조회 → ArrayList로 큐 구현 코드리뷰 import java.util.*; class Priority {// priority와 location을 담을 객체 클래스 int priority; int location; public Priority(int priority, int location) { this.priority = priority; this.location = location; } } class Solution { public in.. 2024. 3. 22. 전화번호 목록(Lv.2) 문제 설명 입출력 예시 요약 전화번호목록에서 특정 전화번호로 시작하는 전화번호가 있는지 찾기 풀이 접근 방식 1. 반복문을 통해 목록에 접두어 존재 여부 확인 → i번째 전화번호의 length - 1 번째 까지 += 해가면서 목록에서 조회 코드리뷰 import java.util.*; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; HashSet set = new HashSet(); for(String str : phone_book) { set.add(str); } for(int i = 0; i < phone_book.length; i++) { for(int j = 0; j < phone_book[i.. 2024. 3. 22. 타겟 넘버(Lv.2) 문제 설명 입출력 예시 요약 끝까지 더하거나 빼서 target을 완성할 수 있는 경우의 수 구하기 풀이 접근 방식 1. dfs를 통한 모든 경우의 수 구하기 → 재귀함수로 구현, length의 끝까지 도달했다면 return(exit) → 더하는 동작 실행 후 빼는 동작 실행 코드 리뷰 import java.util.*; class Solution { int[] nums; int targetNum; int count = 0; public void dfs(int i, int sum) { if(i == nums.length) {// 탈출조건은 length까지 도달했을 때가 된다. if(sum == targetNum) {// 마지막까지 더하거나 뺏을 때 target과 같은지 비교 count++; } return.. 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) 문제 설명 입출력 예시 요약 잃어버린 사람의 앞 뒤 번호를 여분이 있는 사람 목록에서 찾기 풀이 접근 방식 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. 이전 1 2 3 4 5 6 7 다음