개인과제

알고리즘 문제(자연수를 뒤집어 배열로 만들기)

choijming21 2024. 8. 12. 10:33

Q. 문제: 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를 들어 n이 12345이면 [5, 4, 3, 2, 1]을 리턴합니다.

 

 

제한 조건: n은 10,000,000,000이하인 자연수입니다.

 

 

 

입출력 예

n return
12345 [5, 4, 3, 2, 1]

 

 

 

 

내가 푼 답

function solution(n) {
    return String(n)
    .split('')
    .reverse()
    .map(arr => parseInt(arr));
}

문제를 일단 나누어 생각해본다. (숫자를 문자열로 변환 -> 문자열을 배열로 만들기 -> 배열을 뒤집기 -> 각 문자를 숫자로 변환)

1. 숫자를 문자열로 변환: String(n)을 사용하여 입력 받은 숫자를 문자열로 변환

2. 문자열을 배열로 만들기: split('')을 사용하여 문자열을 개별 문자의 배열로 분할

3. 배열을 뒤집기: reverse()를 사용하여 배열의 순서를 뒤집기

4. 각 문자를 숫자로 변환: .map(arr => parseInt(arr))를 사용하여 각 문자를 다시 정수로 변환

 

 

 

 

더 쉬운 방법으로는

function reverseDigits(n) {
    // 숫자를 문자열로 변환
    n = n + "";
    
    // 문자열을 배열로 변환, 뒤집고, 각 문자를 숫자로 변환
    return n.split('').reverse().map(Number);
}

// 테스트
console.log(reverseDigits(12345)); // [5, 4, 3, 2, 1] 출력

 

n = n + ""을 사용하면 된다. 이 방법은 숫자에 빈 문자열을 더함으로써 숫자를 문자열로 변환하는 방법이다. String(n)대신 사용할 수 있는 더 간단한 방법이다. 위의 풀이랑 또 다른 점은 .map(Number)을 사용했다는 점인데, Number함수는 문자열을 숫자로 변환하는 자바스크립트 내장 함수이다. 이 방법은 parseInt를 사용하는 것보다 더 간결하고 읽기 쉽다.

 

 

 

 

 

두번째 코드는 이전 코드와 동일한 결과를 제공하지만, 조금 더 간결하고 읽기 쉽다. 자바스크립트의 특성을 잘 활용한 좋은 예시이다.

알고리즘 문제를 풀 때는 다양한 방식으로 접근할 수 있다. 내가 풀고 나서 다른 사람의 풀이를 보는 것은 정말 많은 도움이 될 수 있다. 그래서 나는 알고리즘 문제를 푸는 것에만 그치지말고 다른 사람의 풀이로도 풀어보는 좋은 습관을 길러야겠다!!!

 

'개인과제' 카테고리의 다른 글

나만의 TodoList 만들어보기  (0) 2024.08.13
리액트 베이직반 수업 1일차  (0) 2024.08.12
드디어 React  (0) 2024.08.08
3주차 팀프로젝트를 마치며...  (0) 2024.08.07
3주차 팀프로젝트 중간점검  (0) 2024.08.06