[C++] 프로그래머스 자연수 뒤집어 배열로 만들기
2020. 12. 5.
반응형

programmers.co.kr/learn/courses/30/lessons/12932

 

코딩테스트 연습 - 자연수 뒤집어 배열로 만들기

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345

programmers.co.kr

 

1. 서론

 

아주 초간단 level 1 문제. 특히나 앞의 자릿수 더하기 문제를 풀었다면 이 문제는 껌이다.

 

자릿수 더하기: coding-log.tistory.com/32

 

[C++] 프로그래머스 자릿수 더하기

programmers.co.kr/learn/courses/30/lessons/12931 코딩테스트 연습 - 자릿수 더하기 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 +..

coding-log.tistory.com

 

2. 문제 풀이

 

자연수 n이 주어진다. 그 n을 각 자릿수대로 분리해서 배열에 역순으로 넣는 문제이다.

역순으로 넣는 것에 대해서 너무 어렵게 생각하지 않아도 된다. 왜냐하면 자릿수 더하기에서 했던 것처럼 하면 어차피 맨 뒤의 자릿수 값부터 분리되기 때문에 역순이 배열에 넣을 때 원래 순서가 되기 때문이다.

 

예를 들어 자연수 123이 있다.

 

123 % 10 = 3 -> 배열에 넣기 -> 123 / 10 = 12

12 % 10 = 2 -> 배열에 넣기 -> 12 / 10 = 1

1 % 10 = 1 -> 배열에 넣기 -> 1 / 10 = 0

 

이런 식으로 진행하면 배열에는 3, 2, 1 이 저절로 역순으로 들어가는 것이다.

 

3. 코드 설명

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(long long n) {
    vector<int> answer;
    
    while(1)
    {
        if (n <= 0) break;
        answer.push_back(n % 10);
        n /= 10;
    }
    
    return answer;
}

 

while문을 무한으로 돌리고 n이 0이 되었을 경우에 반복문을 멈춘다.

그리고 위에서 말한 것처럼 나머지 부분을 배열에 넣고 자연수 값을 10으로 나눠 다시 나머지를 구하는 것을 반복한다.

 

 

 

 

 

 

 

 

 

 

반응형
myoskin