ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 항해 99 - 자연수 뒤집기
    알고리즘 공부/JavaScript 문제 2023. 4. 19. 20:34

    [ 문제 ]

    자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 

    예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

    • n은 10,000,000,000이하인 자연수입니다.

     

    [ Input / Output 예시 ]

    Input Output
    12345 [5,4,3,2,1]

     


    [ 풀이 ]

    풀이 (1)

    (내 풀이 - 1)

    자연수를 문자열로 만든 후, split 하고 map을 사용하여 뒤집는다.

    현재 array의 값은 문자열이므로 숫자형으로 변환하는 과정을 잊지 말자.

     

    풀이 (2)

    (내 풀이 - 2)

    10으로 나눈 나머지를 이용한다.

    n을 10으로 나눈 나머지를 array에 push하고 몫을 n으로 업데이트 하면서 n이 0이 될때까지 반복한다.

     

    풀이 (3)

    (프로그래머스 풀이)

    (1)번 풀이에서 map을 사용하는 것이 아니라 .reverse() 라는 메소드를 사용한다.

     

    [ 코드 ]

    // 풀이 (1)
    // 자연수를 문자열로 만들어서 한 글자씩 쪼갠다.
    // 쪼갠 문자열을 map 을 통해서 뒤집고 숫자로 변경한다.
    const solution1 = function (n) {
    	// 자연수를 문자열로 변환하고 글자별로 찢는다.
        const nArray = (n+'').split('')
        
    	// map 을 이용해서 뒤집고 숫자형으로 변환한다.
        return nArray.map((_, ind)=>{return nArray[nArray.length-ind-1]/1});
    }
    
    console.log(solution1(12345));
    
    
    // 풀이 (2)
    // 자연수가 0이 될 때까지 while을 돌린다.
    // 10으로 나눈 나머지를 결과 배열에 push하고 몫을 자연수로 업데이트 한다.
    const solution2 = function (n) {
    	// 결과 담을 변수
        const result = [];
    	
    	// n이 0이 될 때까지 반복한다.
    	while (n>0) {
    		// 10으로 나눈 나머지를 결과 변수에 넣는다.
    		result.push(n%10);
    		// n을 10으로 나눈 몫으로 업데이트한다.
    		n = Math.floor(n/10)
    	}
        
        return result;
    }
    
    console.log(solution2(12345));
    
    
    // 풀이 (3)
    // .reverse() 메소드 사용
    const solution3 = function (n) {
        // 풀이 (1)의 split까지는 동일하고, reverse라는 메소드를 사용해서 뒤집는다.
    	return n.toString().split('').reverse().map((a)=>a/1);
    }
    
    console.log(solution3(12345));

    댓글

Designed by Tistory.