풀이과정
이 문제는 3진법의 변형 문제이다.
10진수에서 3진수를 구할 때의 알고리즘을 쓰면 되는데
만약에 나머지가 0이라면 0 대신 4를 붙여주면 되는 문제이다.
더하여, n의 값에 -1을 해줘야한다.
풀이 1
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(int n) {
string answer = "";
while(n != 0){
if(n % 3 == 0){
answer += "4";
n -= 1;
}
else if(n % 3 == 1){
answer += "1";
}
else if(n % 3 == 2){
answer += "2";
}
n /= 3;
}
reverse(answer.begin(), answer.end());
return answer;
}
풀이 2
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
while(n != 0){
if(n % 3 == 0){
answer += "4";
n -= 1;
}
else if(n % 3 == 1){
answer += "1";
}
else if(n % 3 == 2){
answer += "2";
}
n /= 3;
}
// reverse 함수 구현
for(int i = 0; i < answer.size() / 2; i++){
int temp = answer[i];
answer[i] = answer[answer.size() - 1 - i];
answer[answer.size() - 1 - i] = temp;
}
return answer;
}
'🍞 Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][Level2] 다음 큰 숫자 c++ (0) | 2022.10.20 |
---|---|
[프로그래머스][Level2] 게임 맵 최단거리 c++ (0) | 2022.10.20 |
[프로그래머스][Level2] 2개 이하로 다른 비트 c++ (0) | 2022.10.20 |
[프로그래머스][Level2] 2 x n 타일링 c++ (0) | 2022.10.20 |
[프로그래머스][Level1] 크레인 인형뽑기 게임 c++ (0) | 2022.09.03 |