반응형
728x170
우리가 쉽게 하는 n진법 변환을
컴퓨터로 어떻게 표현할까?
생각하면 된다.
역순인 이유도 있었다.
https://programmers.co.kr/learn/courses/30/lessons/68935?language=cpp
배운 점
스택으로도 넣어서 꺼내쓸 수 있지만 나는
string으로 연습해봤다.
#맞는 풀이
#include <string>
#include <vector>
#include <cmath>
#include <iostream>
using namespace std;
//n은 1억 이하인 자연수
//3진수 만드는법 3으로 나누면서 몫과 나머지 조사.
int solution(int n) {
int answer = 0;
int div = 0; //몫
int res = 0; //나머지
string s = "";
div = n; // 초기값.
while(div>=3){
res = div%3;
div = div/3;
s += to_string(res);
}
s += to_string(div);
//s는 역순으로 정렬한 것과 동일
//이것을 정방향으로 보고 계산
int size = s.size();
size--; //0부터 n-1까지
for(auto x : s){
int n = x - '0';
answer += n * pow(3,size--);
}
return answer;
}
#다른 사람 풀이
Vector의 Push_back()으로 나처럼 문자열 객체 뒤에 그냥 +연산한 것과 마찬가지다.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#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
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
프로그래머스, 두 개 뽑아서 더하기 : C++ [CPP] (0) | 2021.11.10 |
---|---|
프로그래머스, 예산 : C++ [CPP] (0) | 2021.11.10 |
프로그래머스, 폰켓몬 : C++ [CPP] (0) | 2021.11.09 |
프로그래머스, 체육복 : C++ [CPP] (0) | 2021.11.07 |
프로그래머스, 모의고사 : C++ [CPP] (0) | 2021.11.07 |