알고리즘 스터디 3일차 - 문제 풀이(Javascript)

싱클베어·2022년 1월 16일
0

algorithm

목록 보기
3/6
post-custom-banner

아래 3개의 문제에 대해 문제 풀이를 작성하였습니다.

프로그래머스 - 연습문제 - 자릿수 더하기
프로그래머스 - 연습문제 - 정수 제곱근 판별

1. 자릿수 더하기 (q22)


문제 설명

자연수 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'];
 

분석 필요..

2. 정수 제곱근 판별 (q25)


문제 설명

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

제한 조건

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.

예시

입력
n=121 , n=3

출력
3, -1

  • 입출력 예#1 : 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
  • 입출력 예#2 : 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;
}

작성중 ...


참고 URL

  1. 자릿수 더하기

    Javascript map, reduce 활용하기
    자바스크립트 배열 Array.reduce() 파헤치기 (영상)
    자바스크립트 배열 Array.map() 파헤치기 (영상)

  2. 정수 제곱근 판별

    MDN - RegExp 정규식표현

profile
안녕하세요.
post-custom-banner

0개의 댓글