https://www.acmicpc.net/problem/2529
1. 재귀함수 돌릴 조건
- 첫번째 시작하는 숫자는 0부터 9까지 모든 숫자가 가능하므로
- 0 부터 9 까지 모든 수를 재귀함수로 돌린다.
for(int i=0;i<10;i++){
check[i]=true;
recursion(0,Integer.toString(i));
check[i]=false;
}
2. 재귀함수 파라미터
- 깊이를 비교하는 int depth, 저장될 String 로 한다.
public static void recursion(int depth, String str)
3. 결과값 처리
- 저장될 String 값은 012 와 같은 숫자아닌 값도 비교해야 하므로,
- ArrayList 형식에 담아서
- 마지막에 Collections.sort 를 사용해서 제일 큰 String형과 작은 String형을 반환한도록 한다.
Collections.sort(result);
bw.write(result.get(result.size()-1) +"\n");
bw.write(result.get(0)+"\n");
4. 재귀함수 내부 설명
1) "<" 값을 만나면, String 마지막 값보다 큰 값부터~ 9까지 for 문을 돌리도록
2) ">" 값을 만나면, String 마지막 값보다 0부터 ~ 작은 값까지 for문을 돌리도록
5. 그 외
* ArrayList 에서 길이는 size() 사용
* String에서 길이는 length() 사용
* Char 에서 int 형으로 출력하고싶으면 - '0' 사용
str.charAt(str.length()-1) - '0';
'Algorithm Study' 카테고리의 다른 글
[BOJ] 1780번: 종이의 개수/ JAVA, 재귀 (0) | 2022.04.25 |
---|---|
[BOJ] 로또 / JAVA, 재귀 (0) | 2022.04.07 |
[BOJ] 10819번: 차이를 최대로 / JAVA / Backtracking, BruteForce (0) | 2022.03.26 |
[BOJ] 음식물 피하기 / JAVA / DFS (0) | 2022.03.23 |
[BOJ] 외판원순회2 / Java / 백트래킹 (0) | 2022.03.22 |