프로그래머스 124나라
문제링크
https://programmers.co.kr/learn/courses/30/lessons/12899?language=cpp
문제
풀이
- share가 3으로 나누어 떨어지면 4를 추가, share--
- share를 3으로 나눈 나머지가 1이면 1을 추가
- share를 3으로 나눈 나머지가 2이면 2를 추가
시행착오
3진수로 변환하는 과정에서 일반적인 3진수와 달리 0이 존재하지 않기때문에 3으로 나누어 떨어진다면 몫을 하나 줄이고 0대신 4을 추가하는 작업이 필요했다.
뺄셈에서 수를 빌려오는(?) 것과 비슷한 사고로 진행했다.
일반적인 3진수 변환에서 어떻게 변형을 해야할지 한참 고민했다...
코드
#include <string>
#include <vector>
#include <stack>
using namespace std;
string solution(int n) {
string answer = "";
stack<char> st;
int share = n, remainder;
while (share != 0) {
remainder = share % 3;
share = share / 3;
if (remainder == 0) {
share -= 1;
st.push('4');
}
else if (remainder == 1) {
st.push('1');
}
else if (remainder == 2) {
st.push('2');
}
}
while (!st.empty()) {
answer += st.top();
st.pop();
}
return answer;
}
후기
문제도 단순하고 정~말 쉬워보이는데 생각만큼 쉽지 않았다.
Author And Source
이 문제에 관하여(프로그래머스 124나라), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bgg01578/프로그래머스-124나라저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)