알고리즘 스터디
[프로그래머스] 124 나라의 숫자(C++)
coding_
2021. 8. 24. 01:17
728x90
반응형
프로그래머스 124 나라의 숫자
1. 문제
2. 접근법
- 문제 접근
- 숫자는 1, 2, 4 세개밖에 없다.
- n=1 인 경우, 124진법은 1이고 3으로 나눈 나머지는 1
- n=2 인 경우, 124진법은 2이고 3으로 나눈 나머지는 2
- n=3 인 경우, 124진법은 4이고 3으로 나눈 나머지는 0
- 몫이 0이 아닐때까지 반복하는데 3과 나누어 떨어지는 경우는 몫이 1생기기 때문에 -1을 해줘야 한다.
3. 코드
#include <string>
#include <vector>
using namespace std;
string solution(int n)
{
string answer = "";
//몫에 받은 n값을 넣어주고 나머지는 -1로 초기화시킴
int share = n;
int remainder = -1;
//몫이 0이 아닐때까지 반복
while (share != 0)
{
//3기준
remainder = share % 3;
share = share / 3;
//나누어 떨어지는 경우 몫을 1빼줌, 3을 제외한 경우 반복됨
if (remainder == 0)
{
answer = "4" + answer;
share--;
}
else if (remainder == 1)
{
answer = "1" + answer;
}
else if (remainder == 2)
{
answer = "2" + answer;
}
}
return answer;
}
4. 결과
5. 참고
좀 더 간단한 코드를 찾아 보았는데, 4 1 2 를 각각 배열에 넣고 순회하는 방법을 사용하면 코드가 훨씬 간단해진다.
#include <string>
#include <vector>
using namespace std;
string solution(int n)
{
string answer = "";
//3으로 나누어 떨어지는 경우 순서를 맞추기 위해 배열을 4, 1, 2로 선언
string temp[3]{"4", "1", "2"};
while (n)
{
answer = temp[n % 3] + answer;
//나누어 떨어지는 경우 몫을 1빼줌
if (!(n % 3))
n = n / 3 - 1;
else
n = n / 3;
}
return answer;
}
728x90
반응형