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
- 정올 1620
- 자바 코테
- 백준2251
- 파티션 크기 조정
- 중복순열
- 코테
- N과M
- 볼륨 만들기
- 백준15652
- 백준13458
- 재귀함수
- 중복조합
- 23288
- 에라토스테네스의채
- 순열
- 주사위굴리기2
- Bfs와DFS
- 정보처리기사
- 완전탐색
- java
- BFS
- 알고리즘
- 전화번호속의암호
- 백준
- 자바
- 완탐
- 삼성역테
- 코테준비
- D드라이브생성
- 알고리즘개념
Archives
- Today
- Total
뚱땅뚱땅
[문제] 백준 2661번 좋은수열 본문
728x90
내 풀이
코드만 보면 쉽게 푼 것 같지만, 쉽게 풀지는 못했었다.
수열을 String으로 할 생각을 안하고 배열로 하려고 했어서 실수도 계속했고, 부분수열끼리 비교할 때도 계속 실수했다.
substring을 통해 간단히 비교할 수 있었다.
public class BOJ_2661 {
static int N;
static int[] arr;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(in.readLine());
String s= "1"; // 처음 1로 시작
good(1,s);
}
// 수열 s가 좋은 수열인지 판별하는 함수
static boolean isGood(String s) {
int len = s.length();
int start = len-1;
int end = len;
for(int i=1;i<=len/2;i++) { // 길이의 절반만큼 비교하게 됨.
if(s.substring(start,end).equals(s.substring(start-i,end-i)))// 부분 문자열 비교.
return false;
start--; // 길이를 하나씩 늘려가면서 비교
}
return true;
}
// 좋은 수열 찾는 함ㅅ
static void good(int len, String s) {
if(len == N) {
System.out.println(s);
System.exit(0);
}
for(int i=1;i<=3;i++) {
if(isGood(s+i)) { // 1,2,3 중 하나를 추가했을 때 좋은 수열이면 재귀
good(len+1, s+i);
}
}
}
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[문제] 백준 1182번 부분수열의 합 (0) | 2021.03.09 |
---|---|
[문제] 백준 2580번 스도쿠 (0) | 2021.03.09 |
[문제] 백준 13458번 시험 감독 (0) | 2021.03.08 |
[문제] 백준 1149번 RGB 거리 (0) | 2021.03.06 |
[문제] 백준 1260번 BFS와 DFS (0) | 2021.03.04 |
Comments