문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12932

문제

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

제한 조건

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

풀이 과정

풀이 1

자연수 n을 문자열로 바꾼뒤, reverse함수를 실행시켜 문자열을 뒤집어준다.
그리고 char -> int 하기 위해 ‘0’을 빼주며 answer에 넣는다.

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(long long n) {
    vector<int> answer;

    string str = to_string(n);
    reverse(str.begin(), str.end());
    for(int i = 0; i < str.size(); i++){
        answer.push_back(str[i] - '0');
    }
    return answer;
}

풀이 2

reverse함수를 직접 구현했다.
str.size() / 2 까지 반복문을 돌리고 swap 함수를 구현했다.

#include <string>
#include <vector>

using namespace std;

vector<int> solution(long long n) {
    vector<int> answer;

    string str = to_string(n);
    // swap 함수 구현
    for(int i = 0; i < str.size() / 2; i++){
        int temp = str[i];
        str[i] = str[str.size() - 1 - i];
        str[str.size() - 1 - i] = temp;
    }
    for(int i = 0; i < str.size(); i++){
        answer.push_back(str[i] - '0');
    }
    return answer;
}

댓글남기기