문제 링크 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;
}
댓글남기기