아래 3개의 문제에 대해 문제 풀이를 작성하였습니다.
프로그래머스 - 연습문제 - 자릿수 더하기
프로그래머스 - 연습문제 - 정수 제곱근 판별
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
- N의 범위 : 100,000,000 이하의 자연수
입력
N=123
, N=987
출력
6
, 24
function solution(n)
{
var answer = 0;
//n=123 -> ['1','2','3']
console.log(n); // 123
console.log(n + ''); // '123'
console.log(typeof(n + '')); // string
function intTostrarray(number) {
return (number + '').split(''); // (number + '')를 배열에 한 글자씩 나눠 저장
}
let nArray = new Array();
nArray = intTostrarray(n);
console.log(nArray); // ['1', '2', '3']
// 초기값 0부터 시작, parseInt(number) 를 배열 처음부터 순차적으로 더한 값을 리턴
answer = nArray.reduce((accumulator, number) => accumulator + parseInt(number),0);
return answer;
}
map과 reduce를 이해 못해서 한참을 헤맸는데, 영상으로 진행과정을 쭉 한번 보고난 후 스스로 크롬 개발자 도구의 콘솔을 열어 직접 이것저것 조작해보는 것이 이해가 가장 빨랐다. 변수에 함수를 넣는 것은 여전히 거부감이 들어, 함수를 별도로 선언하고 불러오는 쪽으로 구현했다.
function getDayName(a,b){
var dayList = ['FRI','SAT','SUN','MON','TUE','WED','THU'];
분석 필요..
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
입력
n=121
, n=3
출력
3
, -1
function solution(n) {
var answer = 0;
let x = Math.sqrt(n) // n의 제곱근은 x
// x가 정수인지 판별 후, true일 경우 (x+1)의 2제곱을, 아닐경우 -1 리턴
answer = Number.isInteger(x) ? Math.pow(x+1, 2) : -1;
return answer;
}
비교했다.
function solution(s){
return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
}
작성중 ...