문제
풀이
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
//3진법
string answer = "";
vector<string> nara = {"1","2","4"};
while(n>0){
n = n-1;
answer.insert(0,nara[n%3]);
n = n/3;
}
return answer;
}
숫자가 1, 2, 4 뿐이므로 3진법과 동일한 방법이라 생각하고 풀었다.
3진수랑 비교했을 때 각 자리다 1씩 차이가 생기기 때문에 -1을 해주었다.
다른 사람 풀이
#include<iostream>
#include<vector>
using namespace std;
string change124(int no)
{
string answer = "";
int a;
while(no > 0){
a = no % 3;
no = no / 3;
if (a == 0){
no -= 1;
}
answer = "412"[a] + answer;
}
return answer;
}
int main()
{
int testNo = 6;
string testAnswer = change124(testNo);
cout<<testAnswer;
}
"412"[index] 부분이 인상적이다!
위를 사용하여 vector를 따로 만들지 않고도 풀 수 있었다.
https://popawaw.tistory.com/46
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스] 힙(Heap) - 더 맵게 / 우선순위큐(priority_queue) (0) | 2022.03.23 |
---|---|
[프로그래머스] 스택/큐 - 기능개발 (0) | 2022.03.19 |
[프로그래머스] 멀쩡한 사각형 / 최대공약수, 유클리드 호재법 (0) | 2022.03.15 |
[프로그래머스] 하샤드 수 (0) | 2022.03.03 |
[프로그래머스] 핸드폰 번호 가리기 / replace (0) | 2022.03.03 |