-
[프로그래머스] 3진법 뒤집기 c++Coding Test/programmers 2022. 9. 13. 12:53728x90
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한 사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n result 45 7 125 229 풀이
string을 사용한 풀이 방식입니다.
#include <string> #include <vector> #include <cmath> using namespace std; int solution(int n) { int answer = 0; string strThird(""); while(n > 0){ int tmp = n % 3; n /= 3; strThird += to_string(tmp); } int len = strThird.size() - 1; for(int i = 0; i <= len ; i++){ int tmp = strThird[i] - '0'; answer += tmp * pow(3 , len - i); } return answer; }
다른 방법
vector를 사용한 풀이 방식입니다.
vector 원소를 뒤에서 부터 접근하여 10진수로 변환합니다.
3진수를 10진수로 변환하기 위한 k값을 3씩 곱하게 하여 자릿수에 맞게 계산하도록 합니다.
#include <string> #include <vector> using namespace std; int solution(int n) { int answer = 0; vector<int> v; while(n > 0){ v.push_back(n%3); n/=3; } int k = 1; while(!v.empty()) { answer += k*v.back(); v.pop_back(); k*=3; } return answer; }
728x90'Coding Test > programmers' 카테고리의 다른 글
[프로그래머스] 체육복 c++ (0) 2022.09.13 [프로그래머스] 두 개 뽑아서 더하기 c++ (0) 2022.09.13 [프로그래머스] 약수의 개수와 덧셈 c++ (0) 2022.09.13 [프로그래머스] 문자열을 정수로 바꾸기 c++ (0) 2022.09.12 [프로그래머스] 하샤드 수 C++ (2) 2022.09.12