[#29][알고리즘] 124나라의 숫자
프로그래머스 > 124나라의 숫자
문제 링크(https://programmers.co.kr/learn/challenge_codes/158)C++풀이
#include<iostream>
#include<vector>
#include<algorithm> //reverse()사용 위해서
using namespace std;
string change124(int no)
{
string answer = "";
int rest, quo;
while(no > 0){
rest = no % 3; //나머지
quo = no / 3; //몫
if( rest == 0 ) { //나머지가 0이면
answer.append("4"); //4 append. 3으로 나누어 떨어지는 수는 마지막 수가 4이므로
quo--; //몫--
if(quo == 0) break; //몫이 0이되면 break
else no = quo; //몫이 0이 아닌 경우 no에 몫을 넣어줌. no가 15인 경우 -> no = 4
continue;
}
no = quo;
answer.append(to_string(rest));
}
// string 거꾸로
reverse(answer.begin(), answer.end());
return answer;
}
int main()
{
int testNo = 15;
string testAnswer = change124(testNo);
cout<<testAnswer;
}
| cs |
no = 15
rest = 15 % 3 = 0
quo = 15 / 3 = 5
if문 조건 만족 : rest == 0
answer = "4"
quo = 4
no = 4
--------------------------------------------------
no = 4
rest = 4 % 3 = 1
quo = 4 / 3 = 1
if문 조건 만족x
no = 1
answer = "41"
---------------------------------------------------
no = 1
rest = 1 % 3 = 1
quo = 1 / 3 = 0
if문 조건 만족x
no = 0
answer = "411"
---------------------------------------------------
no = 0 => while문 종료
reverse 후 answer = "114"
다른사람 풀이(완전신기)
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
string change124(int no){
string answer = "";
int rest;
while (no > 0) {
rest = no % 3;
no = no / 3;
if (rest == 0)
no--;
answer += "412"[rest];
}
reverse(answer.begin(), answer.end());
return answer;
}
int main(){
int testNo = 10;
string testAnswer = change124(testNo);
cout << testAnswer;
}
| cs |
댓글
댓글 쓰기