자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
n은 10,000,000,000이하인 자연수입니다.
첫 번째는 반복문을 이용해 풀어주었다.
function solution(n) {
let answer = [];
let arr = (n+"").split('');
for(i=arr.length-1;i>=0;i--){
answer.push(arr[i])
}
return answer.map(n => Number(n));
}
두 번째는 reverse( )
메서드를 이용해서 풀어보았다.
function solution(n) {
return (n+"").split('').reverse().map(n => parseInt(n));
}
function solution(n) {
var arr = [];
do {
arr.push(n%10); // 마지막 자리 숫자
n = Math.floor(n/10); // 마지막 자리 숫자를 제거하여 다시 실행
} while (n>0);
return arr;
}
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
문자열 s의 길이 : 50 이하의 자연수
문자열 s는 알파벳으로만 이루어져 있습니다.
function solution(s){
let n = s.toLowerCase();
let p = 0;
let y = 0;
for(let e of n) {
if(e === "p") p++
if(e === "y") y++
};
return p === y ? true : false;
}
해당 문자로 split해서 바로 갯수를 세어줄 수도 있다!
function numPY(s){
return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
}
혹은 정규표현식과 match( )
메서드를 이용해 갯수를 세어줄 수도 있다.
function numPY(s) {
return s.match(/p/ig).length == s.match(/y/ig).length;
}
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
n은 1이상, 50000000000000 이하인 양의 정수입니다.
n return
121 144
3 -1
function solution(n) {
let sqrt = Math.sqrt(n);
return sqrt !== parseInt(sqrt) ? -1 : (sqrt+1)**2;
}
정수인지 판별할 때 아래 메서드를 써도 된다.
⭐️ Number.isInteger(value)
function solution(n) {
let sqrt = Math.sqrt(n);
return Number.isInteger(sqrt) ? (sqrt+1)**2 : -1;
}
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
x는 -10000000 이상, 10000000 이하인 정수입니다.
n은 1000 이하인 자연수입니다.
x씩 증가시키는 부분을 반복문 내부에서 해결하기 어려워서 변수에 따로 x를 담아놓고 더해주는 방식으로 해결하였다.
function solution(x, n) {
let answer = [];
let d = x;
for(i=0;i<n;i++){
answer.push(x);
x+=d;
}
return answer;
}
x를 더하는 방식이 아닌 i를 곱해주는 방식으로 해결할 수 있다.
function solution(x, n) {
var answer = [];
for (let i = 1; i <= n; i++) {
answer.push(x*i)
}
return answer;
}
배열에 값을 push하는 방식이 아닌, 배열을 만들어놓고 map으로 값을 업데이트하는 방식으로도 해결할 수 있다.
function solution(x, n) {
return Array(n).fill(x).map((v, i) => (i + 1) * v)
}