반응형
프로그래머스 링크
https://school.programmers.co.kr/learn/courses/30/lessons/68935
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예 | n | result
45 | 7 |
125 | 229 |
코드1(String)
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(int n) {
int answer = 0;
string str;
while (n > 0)
{
int Remainder = n % 3;
str += to_string(Remainder);
n /= 3;
}
answer = stoi(str, nullptr, 3);
return answer;
}
정확성
코드2(vector)
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int solution(int n) {
int answer = 0;
vector<int> vec;
// 3진법 변환
while(n > 0)
{
vec.push_back(n % 3);
n /= 3;
}
// 리버스 하여 반전되지 않은 3진법으로 변경
reverse(vec.begin(), vec.end());
size_t Size = vec.size();
// 0번 인덱스 값은 더해줌
answer += vec[0];
// 1번 인덱스부터 10진수 변환값 Add
for(size_t i = 1; i < Size; ++i)
{
answer += pow(3, i) * vec[i];
}
return answer;
}
정확성
이번 문제는 벡터와 스트링을 이용해서 두 가지 방식으로 풀어보았다.
스트링을 사용해서 stoi함수를 활용해서 하면 매우 쉽게 변환이 가능하다
vector의 경우 변환 그대로 풀이해봤다.
반응형
'프로그래머스 > lv1' 카테고리의 다른 글
프로그래머스 : 탐욕법(Greedy) > 체육복(lv1) c++ (0) | 2023.04.24 |
---|---|
프로그래머스 : 2019 KAKAO BLIND RECRUITMENT > 실패율(lv1)c++ (0) | 2023.04.19 |
프로그래머스 : Summer/Winter Coding(~2018) > 예산(lv1) (0) | 2023.03.24 |
프로그래머스 : 2018 KAKAO BLIND RECRUITMENT[1차] > 비밀지도(lv1) (0) | 2023.03.23 |
프로그래머스 : 월간 코드 챌린지 시즌1 > 두 개 뽑아서 더하기 (lv1) (0) | 2023.03.22 |
댓글