개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp 가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.
제한사항
hp는 자연수입니다.
0 ≤hp≤ 1000
입출력 예
풀이
일개미가 공격력이 1이므로 먼저 공격력이 가장 높은 장군개미로 hp를 깎고, 남은 hp를 병정개미가 깎고, 남은 hp를 일개미가 깎을 수 있도록 풀이하였다.
class Solution {
public int solution(int hp) {
int answer = 0;
int[] dps = {5, 3, 1};
// 장군개미 : 공격력 5, 병정개미 : 공격력 3, 일개미 : 공격력 1
for(int i = 0; i < dps.length; i++) {
if (hp >= dps[i]) {
answer += hp / dps[i];
hp %= dps[i];
}
}
return answer;
}
}
머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter 가 매개변수로 주어질 때, letter 를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요. 모스부호는 다음과 같습니다.
제한사항
1 ≤letter의 길이 ≤ 1,000
return값은 소문자입니다.
letter의 모스부호는 공백으로 나누어져 있습니다.
letter에 공백은 연속으로 두 개 이상 존재하지 않습니다.
해독할 수 없는 편지는 주어지지 않습니다.
편지의 시작과 끝에는 공백이 없습니다.
입출력 예
풀이
우선 주어진 morse 부호를 String 변수로 복붙해서 쓸데없는 요소들은 replaceAll 함수 사용으로 지웠다. HashMap을 사용하기 위해 Key에 해당하는 morse 부호와 Value에 해당하는 알파벳 들을 구분해서 넣어주었다.
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
제한사항
1 ≤balls≤ 30
1 ≤share≤ 30
구슬을 고르는 순서는 고려하지 않습니다.
share≤balls
입출력 예
풀이
class Solution {
public int combination(int n, int r) {
if (r == 0 || n == r) {
return 1;
} else {
return combination(n-1, r-1) + combination(n-1, r);
}
}
public int solution(int balls, int share) {
return combination(balls, share);
}
}