두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
1 ≤ left ≤ right ≤ 1,000
left right result
13 17 43
24 27 52
left ~ right 사이에 있는 각 숫자의 약수의 갯수를 구해 짝수면 더하고, 홀수면 빼준다.
function solution(left, right) {
let answer = 0;
for(let i=left;i<=right;i++){
let count = 0;
for(let j=1;j<=i;j++){
if(i%j == 0) count++;
}
count % 2 ? answer -= i : answer += i;
}
return answer;
}
어떤 수의 제곱이 되는 수들은 약수의 갯수가 항상 홀수이다.
제곱이 되는 수인지를 확인하려면 제곱근을 취했을 때 정수가 되는지 확인해주면 된다.
function solution(left, right) {
var answer = 0;
for (let i = left; i <= right; i++) {
if (Number.isInteger(Math.sqrt(i))) {
answer -= i;
} else {
answer += i;
}
}
return answer;
}
⭐️ 정수인지 확인하는 메서드 : Number.isInteger( )
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
s return
"a234" false
"1234" true
function solution(s) {
if(s.length == 4 || s.length == 6){
if(/^[0-9]*$/.test(s)) return true;
}
return false;
}
정규표현식만으로 문자열 길이와 숫자 구성을 같이 체크
function alpha_string46(s){
var regex = /^\d{6}$|^\d{4}$/;
return regex.test(s);
}
새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
단, 금액이 부족하지 않으면 0을 return 하세요.
놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수
price money count result
3 20 4 10
기본적인 공식은 다음과 같다.
(부족한 금액) = (예산) - (누적 이용료)
누적 이용료는 아래와 같이 구해줄 수 있다.
누적 이용료 = price x 1 + price x 2 + price x 3 ,,
= price x (1부터 count까지의 합)
위의 공식을 이용해 부족한 금액을 구하면, 금액이 부족한 경우에는 값이 음수로 나오게 된다. 부족한 값이 양수로 나오게 하려면 두 가지 옵션이 있다.
-
를 붙이기 1번 옵션으로 다음과 같이 풀었다.
function solution(price, money, count) {
let answer = money - price * (count*(count+1)/2);
return answer > 0 ? 0 : -answer;
}
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
arr1 arr2 return
[[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]]
[[1],[2]] [[3],[4]] [[4],[6]]
arr1의 값을 각각 대응하는 값을 더한 값으로 바꿔주었다.
⭐️ j의 범위가 arr1.length
가 아니라 arr1[i].length
로 해주는 것이 포인트
function solution(arr1, arr2) {
for(let i=0;i<arr1.length;i++){
for(let j=0;j<arr1[i].length;j++){
arr1[i][j] += arr2[i][j];
}
}
return arr1;
}
map을 중첩시켜서 index 속성을 이용해 풀 수도 있다.
function sumMatrix(A,B){
return A.map((a,i) => a.map((b, j) => b + B[i][j]));
}