간단한 자바스크립트 코딩 테스트
1. 숫자 문자열과 영단어
문제 : 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
* 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
숫자 영단어
0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine
* 결과
function solution(str) {
let eng = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
let answer = str;
for (let i = 0; i < eng.length; i++) {
let arr = answer.split(eng[i]);
if(isNaN(answer) === true) {
answer = arr.join(i);
} else {
answer = answer;
break;
}
}
return Number(answer);
}
console.log(solution('one4seveneight')); // 1478
console.log(solution('23four5six7')); // 234567
console.log(solution('1zerotwozero3')); //10203
2. 평균 구하기
문제 : 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
arr은 길이 1 이상, 100 이하인 배열입니다.
arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
입출력 예
arr return
[1,2,3,4] 2.5
[5,5] 5
* 결과
function solution(arr) {
var answer = 0;
const reducer = (previousValue, currentValue) => Number(previousValue + currentValue);
if(arr) {
answer = (arr.reduce(reducer) / arr.length);
}
return answer;
}
console.log(solution([1,2,3,4])); // 2.5
console.log(solution([5,5])); // 5
3. 음양 더하기
문제 : 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
absolutes의 길이는 1 이상 1,000 이하입니다.
absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
signs의 길이는 absolutes의 길이와 같습니다.
signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
입출력 예
absolutes signs result
[4,7,12] [true,false,true] 9
[1,2,3] [false,false,true] 0
function solution(absolutes, signs) {
var answer = 0;
if(absolutes && signs) {
for(var i=0; i<absolutes.length; i++) {
answer += !signs[i] ? absolutes[i] * -1 : absolutes[i];
}
}
return answer;
}
console.log(solution([4,7,12], [true,false,true])); // 9
console.log(solution([1,2,3], [false,false,true])); // 0
4. 콜라츠 추측
문제 : 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.
1-1. 입력된 수가 짝수라면 2로 나눕니다.
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다.
위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요.
단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요.
입출력 예
n result
6 8
16 4
626331 -1
입출력 예 #1
문제의 설명과 같습니다.
입출력 예 #2
16 -> 8 -> 4 -> 2 -> 1 이되어 총 4번만에 1이 됩니다.
입출력 예 #3
626331은 500번을 시도해도 1이 되지 못하므로 -1을 리턴해야합니다.
결과
function solution(num) {
var answer = 0;
while(num > 1) {
if(num%2 == 0) {
num = num / 2;
} else {
num = num * 3 + 1;
}
answer++;
if(answer > 500)
return -1;
}
return answer;
}
console.log(solution(6)); // 8
console.log(solution(16)); // 4
console.log(solution(626331)); // -1
'개발 > javascript' 카테고리의 다른 글
간단한 자바스크립트 코딩 테스트 몇가지(3) (0) | 2022.04.27 |
---|---|
간단한 자바스크립트 코딩 테스트 몇가지(2) (0) | 2022.04.26 |
자바스크립트 event(이벤트) (0) | 2022.04.19 |
자바스크립트 배열 내장 함수(4) (0) | 2021.12.07 |
자바스크립트 배열 내장 함수(3) (0) | 2021.12.07 |