일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 3D PRINTING
- LEVEL 2
- Kubernetes
- 2022
- 프로그래머스
- hackerrank
- 코딩테스트
- 파이썬
- on-prem
- 하늘과 바람과 별과 시
- openebs
- secondlowestgrade
- nestedlists
- Code Jam 2022
- 방송통신대학교 대학원 정보과학과
- swift
- MySQL
- GitLab
- 해커랭크
- Code Jam
- ingress-nginx
- ESXi 업데이트
- Python
- Qualification Round
- 방통대 대학원 정보과학과
- 하늘과 바람과 별과 詩
- 정보과학과
- C++
- K8S
Archives
- Today
- Total
공대생의 비망록
[프로그래머스][Lv. 2] 124 나라의 숫자 C++ 풀이 본문
https://programmers.co.kr/learn/courses/30/lessons/12899
코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr
풀이
처음에는 0, 1, 2가 아니라 1, 2, 4로 수를 표현해야한다는 점만 빼고는 크게 다를 것이라고 생각하지 않고 3진법으로 생각하고 대충 구현하면 될 줄 알았는데, 의외로 신경쓸 게 있었던 문제였다.
우선 N진법 변환하는 문제와는 크게 틀은 다르지 않다.
주어진 수를 N으로 나눈 나머지를 가지고 문자열 값을 구하고, 주어진 수를 N으로 나눠가며 그 수가 0보다 클 때까지 연산을 반복하면 된다.
단, 1과 2는 그대로 1, 2로 표현하면 되지만 0인 경우 (N으로 나누어 떨어지는 경우)에는 4를 문자열에 더해주고, N으로 나누어 떨어졌으므로 (N 이상의 수일 경우에는 다음 연산 단계에서 처리해야 하므로) 주어진 수에 -1 하면 된다.
끝!
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
31
32
33
34
35
|
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
int number = n;
while (number > 0) {
int tmp = number % 3;
number /= 3;
switch (tmp) {
case 0: {
answer = "4" + answer;
number--;
break;
}
case 1: {
answer = "1" + answer;
break;
}
case 2: {
answer = "2" + answer;
break;
}
default: {
answer += "";
break;
}
}
}
return answer;
}
|
cs |
'Programming Language > C, C++' 카테고리의 다른 글
[프로그래머스][Lv. 2] 카카오프렌즈 컬러링북 C++ 풀이 (0) | 2022.05.03 |
---|---|
[C++] map 컨테이너에 데이터 추가하기 insert()? [] 연산자? (0) | 2022.05.03 |
[Google Code Jam][Qualification Round 2022] 3D Printing C++ 풀이 (0) | 2022.04.03 |
[프로그래머스][Lv. 1] 같은 숫자는 싫어 C++ 풀이 (0) | 2022.03.14 |
[프로그래머스][Lv. 1] 폰켓몬 C++ 풀이 (0) | 2022.03.14 |
Comments