본문 바로가기
알고리즘 문제풀이

[프로그래머스] 알고리즘 73일차 : 3진법 뒤집기

by SiO2whocode 2021. 1. 27.
728x90

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

 

코딩테스트 연습 - 3진법 뒤집기

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수

programmers.co.kr

 

C++
오늘은 뇌코딩하고(원래 코딩은 뇌로 하는 거지만) 폰코딩했다.
10진법 자연수를 입력받아 3진법으로 고친 뒤 3진법을 뒤집어서 그 수를 다시 10진법으로 고치는 문제이다.

 

접근방법
10진법 n을 3으로 나누면서 나머지를 벡터에 push한다. -> 벡터를 pop 하면서 그 수에 3의 제곱수를(3을 계속 곱해가면서) 곱한다. 그 값을 결과값에 더해간다.

 

*
pop_back()하면 마지막 원소를 리턴하면서 지워주는 줄 알았는데 그냥 지우기만 하는 함수여서 back()하고 pop_back()해줬다.

소스코드

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
  int answer = 0;
  vector<int> v = vector<int>();
  while(n!=0){
    v.push_back(n%3);
    n /= 3;
  }
  int mul = 1;
  while(!v.empty()){
    answer += v.back()*mul;
    v.pop_back();
    mul*= 3;
  }
  return answer;
}

 

 

 

728x90