개미 군단
개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp
가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.
function solution(hp) {
return Math.floor(hp / 5) + Math.floor(hp % 5 / 3) + (hp % 5 % 3);
}
모스부호 (1)
머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter
가 매개변수로 주어질 때, letter
를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
function solution(letter) {
morse = {
'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'
}
return letter.split(' ').map(x => morse[x]).toString().replaceAll(',', '');
}
가위 바위 보
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp
가 매개변수로 주어질 때, rsp
에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
function solution(rsp) {
return rsp.split('').map(x => Number(x) === 2 ? 0 : (Number(x) === 0 ? 5 : 2)).toString().replaceAll(',', '');
}
구슬을 나누는 경우의 수
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls
와 친구들에게 나누어 줄 구슬 개수 share
이 매개변수로 주어질 때, balls
개의 구슬 중 share
개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
function solution(balls, share) {
//const factorial = (x) => x === 1 ? 1 : x * factorial(x - 1);
//return factorial(balls) / (factorial(balls - share) * factorial(share));
const factorial = function(x) {
let fac = 1;
if(x === 1) return fac;
for(let i = 2; i <= x; i++) {
fac *= i;
}
return fac;
}
return Math.round(factorial(balls) / (factorial(balls - share) * factorial(share)));
}
처음에 주석처럼 했다가 런타임 에러 + 실패가 있어서 질문하기 뒤져보니 재귀함수 호출 시 발생하는 스택 오버플로우랑 일부 소수로 떨어지는 값을 때문에 반올림 처리.
점의 위치 구하기
사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.
- x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다.
- x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다.
- x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다.
- x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다.
x 좌표 (x, y)를 차례대로 담은 정수 배열 dot
이 매개변수로 주어집니다. 좌표 dot
이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.
function solution(dot) {
let answer = 0;
if(dot[0] > 0 && dot[1] > 0) {
answer = 1;
} else if(dot[0] < 0 && dot[1] > 0) {
answer = 2;
} else if(dot[0] < 0 && dot[1] < 0) {
answer = 3;
} else if(dot[0] > 0 && dot[1] < 0) {
answer = 4;
}
return answer;
}
2차원으로 만들기
정수 배열 num_list
와 정수 n
이 매개변수로 주어집니다. num_list
를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.
num_list
가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list
를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list
의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.
function solution(num_list, n) {
let answer = [];
for(let i = 0, j = 0; i < num_list.length / n; i++, j += n) {
answer[i] = num_list.slice(j, j + n);
}
return answer;
}
'코딩테스트' 카테고리의 다른 글
뇌주름 살리기 - 7 (0) | 2025.01.14 |
---|---|
뇌주름 살리기 - 6 (0) | 2025.01.13 |
뇌주름 살리기 - 4 (0) | 2025.01.11 |
뇌주름 살리기 - 3 (0) | 2025.01.10 |
뇌주름 살리기 - 2 (0) | 2025.01.09 |