
문제 설명
- 정수배열
arr각 원소의 값이50보다 크거나 같은 짝수라면 2로 나눈다.- 정수배열
arr각 원소의 값이50보다 작은 홀수라면 2를 곱한다.
//입력
[1, 2, 3, 100, 99, 98]
//출력
[2, 2, 6, 50, 99, 49]
function solution(arr) {
return arr.map(num => {
if(num >= 50 && !(num % 2)) return num / 2;
if(num < 50 && num % 2) return num * 2;
return num;
})
}
풀이 설명
map()을 사용하여 배열 내의 모든 요소를 순회하며 연산을 수행한다.if문을 사용하여 각 배열의 요소가 담긴num을50보다 큰지 작은지를 판단하여 다르게 연산하고 연산한 결과를return한다.- 결과적으로는 배열에 속한 모든 요소들이 연산을 마친 후 배열로 반환된다.
문제설명
arr의 각 원소에 대해 값이50보다 크거나 같은 짝수라면2로 나눈다.arr의 각 원소에 대해 값이50보다 작은 홀수라면2를 곱하고 다시1을 더한다.- 위 작업을
x번 반복한 결과인 배열을arr(x)라고 표현했을 때,arr(x) = arr(x + 1)인x가 항상 존재한다.x중 가장 작은 값을 반환.
//입력
[1, 2, 3, 100, 99, 98]
//출력
5
function solution(arr) {
let i = 0;
while(!arr.every(num => (num >= 50 && num % 2 == 1)||(num < 50 && num % 2 == 0))){
arr = arr.map(num => {
if(num >= 50 && num % 2 == 0) return num / 2;
if(num < 50 && num % 2 == 1) return num * 2 + 1;
return num;
})
i++;
}
return i;
}
풀이 설명
- 반복한 번수를 저장할
i를0으로 선언한다.while문을 작성하는데, 모든 원소가 조건에 맞는지 검사하는every()메서드를 사용하여arr의 모든 원소들을num >= 50 && num % 2 == 1인지와num < 50 && num % 2 == 0인지 검사한다. 이것을 이용해 모든 원소들이 조건에 만족하지 않을때 까지 반복을 진행한다.- 반복문 안은 위
1번문제를 재사용했다.
문제설명
짝수라면2로 나누고,홀수라면1을 뺀 뒤2로 나누고1이 될 때 까지 반복하고 반복한 번수를 반환하라.
//입력
[12, 4, 15, 1, 14]
//출력
11
function solution(num_list) {
let cnt = 0;
for (let x of num_list) {
while (x !== 1){
if(x % 2 == 0) {
x /= 2
cnt++
} else {
x = (x-1)/2
cnt++
}
}
}
return cnt
}
풀이 설명
- 반복한 번수를 카운트 할
cnt변수를0으로 선언하고,num_list의 모든 원소들에 대해 반복한다.while문을 사용하여x가1이 될때 까지 반복한다.짝수인지홀수인지 확인하여 각각에 알맞은 연산하고 재할당하고,cnt를1더해준다.
문제설명
- 리스트의 길이가
11이상이면 리스트에 있는 모든 원소의 합을 반환한다.- 리스트의 길이가
10미만이면 리스트에 있는 모든 원소의 곱을 반환한다.
//입력
[3, 4, 5, 2, 5, 4, 6, 7, 3, 7, 2, 2, 1]
//출력
51
function solution(num_list) {
let res = 0;
if(num_list.length >= 11) {
num_list.forEach((num) => {res += num})
} else {
res++
num_list.forEach((num) => {res *= num})
}
return res
}
풀이 설명
- 연산 결과를 저장하고 반환할 변수
res를 0으로 선언한다.num_list의 길이가11이상인지 검사하고 이상이라면 배열 전체를 순회하는forEach()메서드를 사용하여res에 모든 원소들을 더해준다.- 배열의 길이가
10미망니라면res에+1을 해주고 모든 원소를res에 곱할당 해준다.
문제설명
알파벳으로 이루어진 문자열
myString과pat이 주어졌을 때myString의 연속된 부분 문자열 중pat이 존재하면1을 그렇지 않으면0을 반환하여라.
//입력(myString, pat)
"AbCdEfG", "aBc"
//출력
`
function solution(myString, pat) {
return myString.toLowerCase().includes(pat.toLowerCase()) ? 1 : 0
}
풀이 설명
includes()메서드를 사용하여myString에pat으로 주어진 문자열이 있는지 확인했을 때, 3항연산자를 사용하여 있으면 1, 없으면 0을 반환하도록 하였다.- 문제에서는 대문자 소문자가 섞여 있기 때문에 검사를 제대로 할 수 없기 때문에, 모든 문자를 소문자로 바꿔주는
toLowerCase()메서드를 사용하였다.