728x90
코드 힌트
- targets 배열에서 각 target 문자열을 하나씩 추출합니다.
- for 루프를 사용하여 targets 배열의 각 요소에 접근합니다.
- 각 target 문자열에서 문자를 하나씩 추출합니다.
- toCharArray() 메소드를 사용하여 문자열을 문자 배열로 변환하고, for-each 루프를 사용하여 각 문자에 접근합니다.
- keymap 배열에 있는 문자열에 대해 indexOf()를 사용하여 최소 위치를 구합니다.
- 각 keymap 문자열에 대해 indexOf() 메소드를 사용하여 문자의 위치를 찾습니다.
- 찾은 위치 중 최소값을 저장합니다.
- keymap을 모두 방문했을 때 target 문자열을 완성할 수 없다면 -1을 저장합니다.
- 만약 문자를 keymap에서 찾을 수 없으면 결과 배열에 -1을 저장합니다.
정답은 더보기 클릭
더보기
class Solution {
public int[] solution(String[] keymap, String[] targets) {
int[] result = new int[targets.length]; // 결과를 저장할 배열 초기화
// 1. targets 배열에서 각 target 문자열을 하나씩 추출합니다.
for (int i = 0; i < targets.length; i++) {
String target = targets[i]; // 현재 타겟 문자열
// 2. 각 target 문자열에서 문자를 하나씩 추출합니다.
for (char c : target.toCharArray()) {
int minIdx = Integer.MAX_VALUE; // 최소 인덱스를 저장할 변수
// 3. keymap 배열에 있는 문자열에 대해 indexOf()를 사용하여 최소 위치를 구합니다.
for (String key : keymap) {
int idx = key.indexOf(c); // 키맵에서 문자의 인덱스를 찾음
// 해당 idx 가 -1이 아니며 minIdx보다 낮을 때 minIdx에 값 넣기
if (idx > -1 && minIdx > idx) {
minIdx = idx; // 최소 인덱스 업데이트
}
}
// 4. keymap을 모두 방문했을 때 target 문자열을 완성할 수 없다면 -1을 저장합니다.
if (minIdx < Integer.MAX_VALUE && result[i] != -1) {
result[i] += minIdx + 1; // 인덱스를 1 기반으로 계산하여 누적
} else {
result[i] = -1; // 최소 인덱스를 찾지 못하면 결과를 -1로 설정
}
}
}
return result; // 결과 배열 반환
}
}
728x90
'프로그래머스(Java) > Level 1' 카테고리의 다른 글
[프로그래머스] 서울에서 김서방 찾기 (0) | 2024.08.01 |
---|---|
[프로그래머스] 숫자 짝꿍 (0) | 2024.07.30 |
[프로그래머스] 제일 작은 수 제거하기 (0) | 2024.07.24 |
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2024.07.24 |
[프로그래머스] 콜라츠 추측 (0) | 2024.07.24 |