250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- English
- nightroutine
- swexpertacademy
- 코테 준비
- sw expert
- 원서
- 프로그래머스
- MySQL
- 백준
- BFS
- 코테
- 직무면접
- SQL
- 원서읽자
- PyQt
- 알고리즘 문제
- the midnight library
- sw expert academy
- 삼성
- D4
- 완전탐색
- 코딩테스트
- STUDYENGLISH
- 코테 대비
- 쉬운 알고리즘 문제
- 알고리즘
- dfs
- englishbook
- 원서읽기
- readingbook
Archives
- Today
- Total
시나브로
[ 프로그래머스 ] 124 나라의 숫자 본문
728x90
진짜 많은 고생을 한 문제이다.
3진법으로 변환하는 것을 알았는데 진법 변화할 때 나오는 0이 문제였다.
point1 . 진법 변환시 나오는 0,3을 4로 대처한다. 그 이유는 변화할 때, 나오는 숫자가 0,1,2 이기 때문에 0,3이 4를 의미한다.
point2. 0을 4로 변경하면, 앞에 수를 하나 줄여야한다. 그 이유는 뺄셈을 할 때와 유사하다.
point3. 진법 변환시 나오는 3은 그 이상 진법번환을 진행하지 않고, 3을 4로 대처한다.
1. 나머지 값을 계산하여 box에 숫자를 입력한다. 이때 0을 4로 변경하였으면, 내림이 필요하기 때문에 signal 변수로 내림을 표시해준다.
2. n/3을 한다.
3. 이후, 1,2 과정을 반복하는데 내림이 표시되어있을 경우, 하나 단계 숫자를 줄일다. 여기서 줄여서 0이 된다면, 내림 표시를 해주는 것을 유의하자.
4. 위의 과정을 반복한 후, 3보다 작아지면, 숫자를 list에 넣고 break 해준다. 여기서는 0과 내림이 발생할 수 없으니 처리해 줄 필요 없다.
5. list 변수에 거꾸로 답을 넣어둬서 for문을 이용해 정방향으로 바꾼다.
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
int signal = 1;
vector<char> list;
while (1) {
if (n <= 3) {
if (n == 1) {
if (signal != 0)
list.push_back('1');
}
else if (n == 2) {
if (signal == 0)
list.push_back('1');
else
list.push_back('2');
}
else if (n== 3) {
if (signal == 0)
list.push_back('2');
else
list.push_back('4');
}
break;
}
int box = n % 3;
if (box == 0) {
if (signal == 0)
box = 2;
else
box = 4;
signal = 0;
}
else if (box == 1) {
if (signal == 0) {
box = 4;
signal = 0;
}
else {
box = 1;
signal = 1;
}
}
else if (box == 2) {
if (signal == 0)
box = 1;
else
box = 2;
signal = 1;
}
n /= 3;
if (box == 1) {
list.push_back('1');
}
else if (box == 2) {
list.push_back('2');
}
else if (box == 4) {
list.push_back('4');
}
}
for (int i = list.size()-1; i >= 0; i--) {
answer += list[i];
}
return answer;
}
https://programmers.co.kr/learn/courses/30/lessons/12899
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[ 프로그래머스 ] 스킬트리 (0) | 2020.04.04 |
---|---|
[ 프로그래머스 ] 멀쩡한 사각형 (0) | 2020.04.04 |
[코딩테스트 연습 _ 스택/큐] 기능 개발 (0) | 2020.03.13 |
[코딩테스트 연습 _ 스택/큐] 다리를 지나는 트럭 (0) | 2020.03.13 |
[코딩테스트 연습 _ 스택/큐] 탑 (0) | 2020.03.13 |
Comments