본문 바로가기
프로그래밍/프로그래머스

Lv1_[3진법 뒤집기, C++] 풀이 및 알고리즘 정리 - 프로그래머스

by 워킹독 2023. 1. 16.
728x90

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 내용, 조건, 예시는 프로그래머스 사이트 참조


알고리즘

  • 10진수를 3진수로 변경
  • 진수 변환에서는 나눗셈과 나머지 연산을 활용해서 출력
  • 출력된 정보는 vector<int>에 저장

저장된 3진수를 앞뒤 반전 후에 10진법으로 변환해야하기 때문에 반복문을 맨뒤에부터 읽어서 3^n씩 곱해서 10진수로 변환 완료

1*(3^0) + 2*(3^1) + 0*(3^2) + 0*(3^3) = 1 + 6 + 0 + 0 = 7

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string>
#include <vector>
 
using namespace std;
 
int solution(int n) {
    int answer = 0;
    
    vector<int> de3;
    while(n > 0) {
        int remainder = n % 3;
        n = n / 3;
        de3.emplace_back(remainder);
    }
 
    int k = 1;
    for(auto it = de3.rbegin(); it != de3.rend(); it++) {
        answer += k * (*it);
        k*=3;
    }
    
    return answer;
}
cs

 

↓↓↓↓↓↓ 유익했다면 하트 뿅 ♥ ↓↓↓↓↓↓

 

728x90
반응형

댓글