https://programmers.co.kr/skill_checks
스킬 체크 레벨 2단계
프로그래밍 초급자를 위한 기초 수준으로 설명되고 있음.
- 1시간 2문제를 풀었습니다.
1번 : progresses 기능이 있고, Speed들이 각각 있을 때 언제 배포가 가능한 지(앞의 기능이 배포가 되어야 뒤에 있는 건들도 배포 가능함.)
HashMap 으로 접근( Day 일자에 몇개의 기능 배포를 하는 지)
-> LinkedHashMap으로 변경함 Key 순서대로 정답을 출력
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
HashMap<Integer, Integer> hm = new LinkedHashMap<>();
int days = 1;
for(int i=0;i<progresses.length;i++){
int progress = progresses[i];
int speed = speeds[i];
progress = progress + speed * days;
while(progress<100){
progress+=speed;
days++;
}
// System.out.println(days);
hm.put(days, hm.getOrDefault(days, 0) + 1);
}
int [] answer = new int[hm.size()];
int idx = 0;
for(int key : hm.keySet()){
// System.out.println(key);
answer[idx] = hm.get(key);
idx++;
}
return answer;
}
}
2번 : target 수를 만드는 경우의 갯 수 출력
DFS로 완전탐색 모든 경우의 수 를 찾아서 answer 출력
class Solution {
static int answer = 0;
public int solution(int[] numbers, int target) {
answer = 0;
dfs(0, numbers.length, target, 0, numbers);
return answer;
}
public void dfs(int depth, int n , int target, int sum, int numbers[]){
if(depth==n){
if(target==sum){
answer++;
}
return ;
}
dfs(depth+1, n, target, sum+numbers[depth], numbers);
dfs(depth+1, n, target, sum-numbers[depth], numbers);
}
}
'알고리즘' 카테고리의 다른 글
[코딩테스트] 2023 Dev-Matching : 웹 백엔드 개발자 상반기 후기 (0) | 2023.03.27 |
---|---|
[코딩테스트 준비] 프로그래머스 웹 백엔드 코딩테스트 준비(3/25) (0) | 2023.03.09 |
[leetcode] 39. Combination Sum - java (0) | 2023.02.24 |
[Leetcode] 22. Generate Parentheses - java (0) | 2023.02.23 |
[Leetcode] 78. Subsets - Java (0) | 2023.02.22 |