알고리즘47 기능개발(Lv.2) 문제 설명 입출력 예시 요약 배포 순서는 정해져 있는 상태에서 기능 개발이 완료된 프로세스는 함께 배포 풀이 접근 방식 1. 기능개발까지 남은 일 수 계산 → 남은 일 수 : (100 - 진행현황) / 속도 2. 배포단계에 있는 프로세스의 남은 일수와 같거나 적은 프로세스는 함께 배포 → Queue 형식으로 데이터 조회 코드리뷰 import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { List remains = new ArrayList(); List answerList = new ArrayList(); for(int i = 0; i < progresses.length; i++) { int rema.. 2024. 3. 22. 튜플(Lv.2) 문제 설명 입출력 예시 요약 해당 문자열을 통해 튜플 구하기 * 여기서 튜플은 정해진 순서가 있고 중복되는 숫자가 없음 풀이 접근 방식 1. 문자열에서 서로 크기가 다른 집합을 떼서 배열에 담는다. → {{20, 111}, {111}} : {20, 111}과 {111}로 split 2. 해당 집합을 요소로 갖는 배열을 문자열의 길이 순으로 정렬한다. → Arrays.sort()에 람다식을 통한 정렬 3. set에 하나씩 담는다. → 두 번째 요소부터는 "," 기준으로 split후 하나씩 담기 코드리뷰 import java.util.*; class Solution { public int[] solution(String s) { HashSet set = new LinkedHashSet(); List answ.. 2024. 3. 22. 피로도(Lv.2) 문제 설명 입출력 예시 요약 던전을 최대로 많이 돌 수 있는 경우의 수 구하기 풀이 접근 방식 1. 완전탐색을 위한 모든 경우의 수 구하기 → 던전의 개수가 3개인 경우: 012, 021, 102, 120, 201, 210 코드리뷰 import java.util.*; class Solution { HashSet set = new HashSet(); // 모든 경우의 수를 구하는 재귀함수 public void recursive(String comb, String remains, int maxLength) { if(!comb.isBlank() && comb.length() == maxLength) { set.add(comb); } for(int i = 0; i < remains.length(); i++) {.. 2024. 3. 22. 프로세스(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. 이전 1 2 3 4 5 6 7 8 다음