반응형
1. 문제 정의
2. 문제 접근
문자열을 이용하라고 되어있지만 나는 dfs를 이용했다.
3. 문제 풀이
- 모든 구할 수 있는 문자열의 경우를 구한다.
- 메서드에 맞게 구현해준다.
4. 코드
class CombinationIterator {
List<String> strList;
int idx = 0;
public CombinationIterator(String characters, int combinationLength) {
strList = new ArrayList<>();
int n = characters.length();
dfs(0, characters,new StringBuilder(),combinationLength);
// Collections.sort(strList);
}
public String next() {
if(idx < strList.size()){
return strList.get(idx++);
}
return "";
}
public boolean hasNext() {
return idx == strList.size() ? false : true;
}
private void dfs(int start, String characters, StringBuilder sb, int l){
if(sb.length() == l){
// System.out.println(sb);
strList.add(sb.toString());
return;
}
for(int i = start; i < characters.length(); i++){
char ch = characters.charAt(i);
sb.append(String.valueOf(ch));
dfs(i+1, characters, sb, l);
sb.deleteCharAt(sb.length()-1);
}
}
}
/**
* Your CombinationIterator object will be instantiated and called as such:
* CombinationIterator obj = new CombinationIterator(characters, combinationLength);
* String param_1 = obj.next();
* boolean param_2 = obj.hasNext();
*/
5. 회고
문제를 보자마자 백준의 N 과 M 시리즈가 생각이 났다. 겹치지 않으면서 모든 문자열을 구하는 건 dfs를 이용하면 쉽게 구할 수 있었다.
sorted distinct 이라는 조건을 인식을 못해서 list에 문자열을 모두 담아 준 뒤 다시 정렬을 한번 더 해주다가 마지막에 깨닫고 빼주었다. 이렇게 메서드를 같이 구현하는 문제들이 더 뭔가 문제를 더 풀맛이? 난다.
반응형
'코딩테스트 > leetcode' 카테고리의 다른 글
99클럽 코테 스터디 30일차 TIL, Stack(Removing Stars From a String) (0) | 2024.06.24 |
---|---|
99클럽 코테 스터디 29일차 TIL, 정렬(Top K Frequent Elements) (1) | 2024.06.20 |
99클럽 코테 스터디 26일차 TIL, 배열(Group the People Given the Group Size They Belong To) (0) | 2024.06.16 |
99클럽 코테 스터디 25일차 TIL, 배열(Find The Original Array of Prefix Xor) (0) | 2024.06.15 |
99클럽 코테 스터디 24일차 TIL, 배열(Subrectangle Queries) (1) | 2024.06.14 |