티스토리 뷰
좋은 수열 (goodseq.cpp)
문제
숫자 1, 2, 3으로만 이루어지는 수열이 있다. 임의의 길이의 인접한 두 개의 부분 수열이 동일한 것 이 있으면, 그 수열을 나쁜 수열이라고 부른다. 그렇지 않은 수열은 좋은 수열이다.
다음은 나쁜 수열의 예이다.
33
32121323
123123213
다음은 좋은 수열의 예이다.
2
32
32123
1232123
길이가 N인 좋은 수열들을 N자리의 정수로 보아 그중 가장 작은 수를 나타내는 수열을 구하는 프로그램 을 작성하라. 예를 들면, 1213121과 2123212는 모두 좋은 수열이지만 그 중에서 작은 수를 나타내는 수 열 1213121이다.
입력
입력은 숫자 N하나로 이루어진다. N은 1 이상 80 이하이다.
출력
첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내 는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다.
예제 입력
7
예제 출력
1213121
코드
//트리순회
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static ArrayList<Integer> box = new ArrayList<>();
public static int count = 0;
public static boolean isFin = false;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//총 몇개의 숫자를 입력 받을 것인지
int a;
int[] b;
int c = 0;
a = sc.nextInt();
b = new int[a];
printS(a,"");
}
public static void printS(int a, String x) {
if(!isGood(x)) return;
if(!isFin) {
int len = x.length();
if(a == 0){
if(isGood(x)) {
System.out.println(x); isFin = true;
}
return;
}
if(len == 0 || !x.substring(len-1,len).equals("1")) {
printS(a-1, x+1);
}
if(len == 0 || !x.substring(len-1,len).equals("2")) {
printS(a-1, x+2);
}
if(len == 0 || !x.substring(len-1,len).equals("3")) {
printS(a-1, x+3);
}
}
}
public static boolean isGood(String x) {
int len = x.length();
for(int i = 2 ; i <= len/2 ; i++) {
for(int j = 0 ; j<= len-2*i; j++) {
if(x.substring(j,j+i).equals(x.substring(j+i,j+2*i))) return false;
}
}
return true;
}
}
'알고리즘 문제 풀이 ' 카테고리의 다른 글
트리의 높이 (1) | 2018.09.27 |
---|---|
공통조상찾기 (0) | 2018.09.27 |
깊이우선탐색 / 너비우선탐색 (0) | 2018.09.27 |
부등호 (0) | 2018.09.20 |
이진 트리 순회 (0) | 2018.09.18 |
소들의 줄세우기 (0) | 2018.09.18 |
달팽이 그리기 (0) | 2018.09.17 |
자연수의 합 / Division (0) | 2018.09.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- java #하노이 #알고리즘 #백준
- 쿼드트리
- 중간거리 #야만나 #약속장소추천 #중간위치 #웹 #리액트 #React #reactjs #kakao지도 #kakaoapi
- 1992번
- Game
- TypeScript
- javascript #백준 #회의실배정 #알고리즘
- 색종이자르기
- 백준 #java #알고리즘
- react
- webpack
- java #알고리즘 #백준 #퇴사
- 백준
- java #백준 #알고리즘 #로또 #6603
- 2630번
- java #오르막수 #백준 #알고리즘
- 알고리즘
- javascript #백준 #알고리즘 #LCS
- Javascript
- java #퀵소트 #quicksort #알고리즘 #백준
- 백준 #알고리즘 #전깃줄 #NodeJs #javascript
- npm
- 한글 자동 완성
- java #백준 #알고리즘 #2805 #나무자르기
- java #알고리즘 #백준 #패션왕신해빈
- javascript #연속합 #알고리즘 #백준
- webspider
- java #알고리즘 #백준 #N과M #백트래킹
- Terminal
- java #알고리즘 #백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함