728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/84512
재귀를 이용하여 푸는 문제입니다.
제시되는 단어의 순서를 맞추는 문제입니다.
길이가 5가 될 때까지 단어를 추가해주고
길이가 5 이하이면 함수를 재귀적으로 호출하여 넘겨받은 인덱스와 이전에 완성된 단어를 넘겨주어
원하는 단어가 나오면 리턴해주면 됩니다.
이 문제를 풀면서 했던 뻘짓은
public class VowelDictionary {
public static void main(String[] args) {
Solution s = new Solution();
System.out.println(s.solution("AAAAE"));
System.out.println(s.solution("AAAE"));
System.out.println(s.solution("I"));
System.out.println(s.solution("EIO"));
}
}
각 케이스에서 사용하는 객체를 따로따로 선언해주어야 했는데
하나의 객체로 모든 케이스를 테스트하였다.
package combination.vowelDictionary;
public class VowelDictionary {
public static void main(String[] args) {
Solution s1 = new Solution();
System.out.println(s1.solution("AAAAE"));
Solution s2 = new Solution();
System.out.println(s2.solution("AAAE"));
Solution s3 = new Solution();
System.out.println(s3.solution("I"));
Solution s4 = new Solution();
System.out.println(s4.solution("EIO"));
}
}
class Solution {
char[] arr = {'A', 'E', 'I', 'O', 'U'};
int num = 0;
String word;
boolean isFind = false;
public int solution(String word) {
this.word = word;
find(0, "");
return num;
}
public void find(int idx, String str) {
for (int i = idx; i < 5; i++) {
String temp = str + arr[i];
int len = temp.length();
num++;
if(word.equals(temp)) {
isFind = true;
return;
}
if(len == 5) continue;
find(idx, temp);
if(isFind) return;
}
}
}
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/java] 오픈채팅방 - 2019 KAKAO BLIND RECRUITMENT - 리스트(List)를 배열(Array)로 (0) | 2022.04.05 |
---|---|
[프로그래머스/sql] 헤비 유저가 소유한 장소 - ORACLE 셀프조인 (0) | 2022.04.01 |
[프로그래머스/java] 2 x n 타일링 - DP (0) | 2022.03.13 |
[프로그래머스/java] 124 나라의 숫자 - num[n % 3] (0) | 2022.03.13 |
[프로그래머스/java] 소수찾기 - 백트래킹 사용(예제 코드 포함) (0) | 2022.03.04 |
댓글