프로그래밍응용/오답노트
프로그래머스, 3진법 뒤집기(C++)
photoner
2021. 2. 23. 18:02
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
모든 출처는 프로그래머스이다 ㅋㅋ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#include <string>
#include <stack>
#include <cmath>
#include <iostream>
using namespace std;
int solution(int n) {
int answer = 0;
stack<int> s1;
int dig = 0;
// 일단 3진법으로 변환하면서 바로 스택에 넣는다.
// -> 스택에서 빼면 뒤집혀진 3진법 형태로 나옴. -> 뒤집는 연산을 할 필요가 없다.
while(n!=0)
{
s1.push(n%3);
n /= 3;
}
// 스택에서 하나씩 빼면서 십진수 변환
while(!s1.empty())
{
answer += s1.top()*pow(3,dig++);
s1.pop();
}
return answer;
}
#include <string>
#include <stack>
using namespace std;
int solution(int n) {
int answer = 0;
stack<int> s1;
int k = 1;
// 일단 3진법으로 변환하면서 바로 스택에 넣는다.
// -> 스택에서 빼면 뒤집혀진 3진법 형태로 나옴. -> 뒤집는 연산을 할 필요가 없다.
while(n!=0)
{
s1.push(n%3);
n /= 3;
}
// 스택에서 하나씩 빼면서 십진수 변환
while(!s1.empty())
{
answer += s1.top()*k;
s1.pop();
k *= 3; // pow 대신할 k
}
return answer;
}
|
cs |
일반적인 진법 변환 문제이다.
처음에 바보같이 pow 함수를 썼는데, k를 거듭으로 곱해 나가면서, 처리해도 되는 문제였다. 그래서 위에는 pow를 사용, 아래는 k를 사용하여 n제곱 처리를 해준다.
728x90
반응형