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 | 31 |
Tags
- SQL
- MySQL
- 해시맵
- lcap
- Mendix
- domain model
- 알고리즘
- 멘딕스
- 재귀
- 정렬
- algorithm
- 그래프
- 이분탐색
- 매개변수 탐색
- 스택
- Bruteforce
- git
- 프로그래머스
- 가중치없는그래프
- dfs
- Sort
- microflow
- 자료구조
- 집합
- 완전탐색
- Recursion
- 트리
- 반효경교수님
- 백트래킹
- 자바
Archives
- Today
- Total
mondegreen
[240417] 알고리즘 리부트 50일차 - 프로그래머스 모음사전 자바 본문
반응형
기본적으로 재귀의 방식으로 구현하면 된다. 다섯가지의 문자로 길이 5의 문자열을 만드는 경우의 수가 5000가지 이하이므로 시간을 고려하지는 않았다. 그래도 글자에 + 하는 건 비효율이라고 생각해서 스트링빌더를 사용했다. 그리고 오래 가지 않도록 답을 찾으면 return 하도록 구현했다.
import java.util.*;
class Solution {
public static char [] arr = {'A', 'E', 'I', 'O', 'U'};
public static String target;
public static int tmp, answer;
public int solution(String word) {
tmp = 0;
answer = -1;
target = word;
StringBuilder sb = new StringBuilder();
int length = sb.length();
makeWords(sb, length);
return answer;
}
public static void makeWords(StringBuilder sb, int currLength){
if (sb.toString().equals(target)){
answer = tmp;
return;
}
if (currLength == 5) return;
for (int i = 0; i < arr.length; i++) {
if (answer != -1) {
return;
}
//System.out.println("currLength: " + currLength);
if(sb.length()>currLength) sb.deleteCharAt(currLength);
sb.insert(currLength, arr[i]);
//System.out.println("현재 문자열: " + sb);
tmp++;
//System.out.println("현재 수: " + tmp);
makeWords(sb, currLength + 1);
}
sb.deleteCharAt(currLength);
}
}
아래는 친구 코드 뭐 이렇게 간단해... 그래 근데 간단하게 푸는 게 맞아.. 속상
import java.util.*;
class Solution {
static char[] arr = {'A', 'E', 'I', 'O', 'U'};
static Map<String, Integer> dir = new HashMap<>();
static int order = 0;
public int solution(String word) {
rec("", word, 0);
return dir.get(word);
}
private void rec(String now, String word, int d) {
dir.put(now, order++);
if(d==5) {
return;
}
for(int i=0; i<5; i++) {
//System.out.println(now+arr[i]);
rec(now + arr[i], word, d+1);
}
}
}
반응형
'알고리즘 풀이 및 리뷰 > 프로그래머스' 카테고리의 다른 글
[240418] 알고리즘 리부트 51일차 - 프로그래머스 무인도 여행 자바 (1) | 2024.04.18 |
---|---|
[240418] 알고리즘 리부트 51일차 - 프로그래머스 택배상자 자바 (0) | 2024.04.18 |
[240415] 알고리즘 리부트 49일차 - 프로그래머스 124 나라의 숫자 자바 (0) | 2024.04.17 |
[240411] 알고리즘 리부트 48일차 - 프로그래머스 여행경로 자바 (0) | 2024.04.11 |
[240403] 알고리즘 리부트 44일차 - 프로그래머스 타겟 넘버 자바 (0) | 2024.04.03 |