https://programmers.co.kr/learn/courses/30/lessons/12899
코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr
문제를 보자마자 3진수 구하는 것 처럼 풀면 되겠다고 생각했는데 그러기엔 규칙성이 좀 다른 느낌이었다.
대충 문제에 대해 간단한 이해만 하고 집에 와서 문제를 다시 보았다.
n이 꽤 크기도 하고 예시 외의 숫자도 적어보니 어느 정도 간단한 규칙성을 알게 됐다.
대충 끄적여 본건데 숫자가 3으로 나눠 떨어지는 경우 몫에서 -1을 해주고 계산하니 얼추 맞는 느낌이라 코드를 실행해봤더니 성공적이었다.😀
소스코드
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
//n이 0보다 큰 경우 계산 반복
while(n>0) {
int a = n/3; int b = n%3; // a: 몫 b: 나머지
string add;
//나머지에 따라 다른 문자열이 붙도록 구현
if(b==1) add= "1";
else if(b==2) add = "2";
else{ //b==0 일 경우에는 몫에서 1을 뺌
a = a-1;
add = "4";
}
answer = add + answer;
n= a;
}
return answer;
}
'CodingTest Practice > Programmers' 카테고리의 다른 글
프로그래머스 : 완주하지 못한 선수 (C++, Lv.1, 해시) (0) | 2022.05.20 |
---|---|
프로그래머스 : 다음 큰 숫자 (C++, Lv.2,연습문제) (0) | 2022.05.18 |
프로그래머스 : 완주하지 못한 선수(C++, Lv.1, 정렬 이용) (0) | 2022.05.18 |
프로그래머스 : 네트워크(C++, Lv.3, DFS) (0) | 2022.05.18 |
프로그래머스 : 더 맵게(C++, Lv.2, 힙) (0) | 2022.05.12 |