티스토리 뷰
프로그래머스 LEVEL 2 문제를 다 풀려고 한다. LEVEL2와 백준을 비교해봤을 때 대략 백준 실버~골드하위 정도 되는것 같다.
이번 문제는 숫자를 입력받아 그 숫자를 124 나라의 규칙에 맞게 변환해야 한다.
숫자가 규칙적이 아니라 단순히 mod연산으로는 구할 수 없지만 문제를 잘 읽어보면 규칙이 보인다.
n[4]는 n[1]에 1을 붙인꼴, n[5]는 n[1]에 2를 붙인 꼴, n[6]은 n[1]에 3을 붙인 꼴이다. n[7]부터는 n[2]에 1을 붙인꼴 ... 이런식으로 흘러간다.
따라서 입력을 받은 후에 자신의 앞에 붙일 수들이 무엇인지 재귀를통해 찾도록 구현했다. 예를들어 13을 입력받으면 n[13]은 n[4]에 1을 붙인꼴이고, n[4]는 n[1]에 1을 붙인꼴이다. 그러므로 n[4]와 n[1]을 구하면 원하는 답을 얻을 수 있다.
3을 주기로 1,2,4 순서로 계속 변경하니, mod 3 연산을 통해 나머지가 1일 경우 1, 2일경우 2, 0일경우 4를 붙이도록 하면 된다.
#include <string>
#include <vector>
using namespace std;
string go(int n){
if (n == 1) return "1";
else if (n==2) return "2";
else if (n==3) return "4";
else{
int t = (n/3);
if (n%3 == 0) t-=1;
string add;
if (n%3 == 0){
add = "4";
}else if (n%3 == 1){
add = "1";
}else if (n%3 == 2){
add = "2";
}
string ret = go(t) + add;
return ret;
}
}
string solution(int n) {
string answer = "";
answer = go(n);
return answer;
}
'알고리즘 풀이 > 재귀' 카테고리의 다른 글
BOJ : 1992 쿼드트리 (0) | 2020.08.06 |
---|---|
BOJ 1780 : 종이의 개수 (0) | 2020.08.06 |
BOJ : 2447 별 찍기-10 (0) | 2020.08.06 |
BOJ 1629 : 곱셈 (0) | 2020.08.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ReactNative
- 투포인터
- 자바
- java
- 자바스크립트
- nodeJS
- nest.js
- 세그먼트 트리
- 구현
- 백트래킹
- 백준
- Computer Architecture
- 벨만포드
- 중앙대학교
- 재귀
- 그래프
- dfs
- node.js
- BFS
- 그리디
- 시뮬레이션
- 알고리즘
- typeORM
- 예외처리
- boj
- nestjs
- 컴퓨터 구조
- 동적계획법
- 컴퓨터 통신
- 스레드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함