문제
풀이
이 문제의 규칙?은
일단 기본적으로
n을 3으로 계속해서 나눕니다 ( 몫이 0이 될때까지 )
그때그때 나오는 나머지가 있을텐데
나머지가
0=>4
1=>1
2=>2
에 대응됩니다.
이 나머지에 대응되는 숫자는 124나라의 숫자에서 가장 오른쪽부터 채워집니다.
여기서 이 규칙을 사용하기 위해서 유의해야 할 것이 있는데,
나머지가 0일때는 몫-1을 해줘야 한다는 것입니다.
ex) n==15일때
먼저 n/3을 하면
몫:5 , 나머지:0
그럼 일단 "4"가 채워짐.
근데 이때 나머지가 0이니까 몫-1을해서 4가됨.
4/3을 하면
몫:1 , 나머지:1
그럼 "1"이 추가로 채워져서 "14"가 됨.
1/3을 하면
몫:0 , 나머지:1
그럼 "1"이 추가로 채워져서 "114"가 됨.
이떄 몫이 0이 됐으므로 종료.
즉 답은 "114"가 나옴
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string aws;
while(n)
{
int temp=n%3;
if(temp==0)
{
aws="4"+aws;
n--;
}
else if(temp==1)
{
aws="1"+aws;
}
else if(temp==2)
{
aws="2"+aws;
}
n=n/3;
}
return aws;
}
'알고리즘 > 프로그래머스 문제풀이' 카테고리의 다른 글
[C++] 올바른 괄호 (Lv.2) (0) | 2022.09.05 |
---|---|
[C++] 올바른 괄호 (Lv.2) (0) | 2022.09.04 |
[C++] 멀쩡한 사각형 (Lv.2) (0) | 2022.08.30 |
[C++] 단체사진 찍기 (Lv.2) (0) | 2022.08.29 |
[C++] 카카오 프렌즈 컬러링북 (Lv.2) (0) | 2022.08.28 |