문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/49993

제한 사항

입출력 예

풀이
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
final String check = new StringBuilder()
.append("[^").append(skill).append("]*").toString();
for (String sk : skill_trees) {
if (sk.matches(check)) answer++;
else {
sk = sk.replaceAll(check, "");
for (int i = 0; i < sk.length(); i++) {
if (skill.charAt(i) != sk.charAt(i)) break;
else if (i == sk.length() - 1) answer++;
}
}
}
return answer;
}
}
후기
드디어 내가 좋아하는 문자열 문제가 나왔다. 일단 첫 번째 시도는 틀렸는데 그 이유를 생각해보니 주어진 순서에 있는 스킬을 모두 사용 안 하고 다른 스킬들로만 구성되어 있어도 가능하는 점을 놓쳐서 그랬다. 이 점만 해결하면 어렵지 않게 풀 수 있다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][JAVA][Lv. 0] 치킨 쿠폰 (0) | 2023.10.31 |
|---|---|
| [프로그래머스][JAVA][Lv. 2] 오픈채팅방 (0) | 2023.10.30 |
| [프로그래머스][JAVA][Lv. 2] 주식가격 (0) | 2023.10.28 |
| [프로그래머스][JAVA][Lv. 2] 땅따먹기 (1) | 2023.10.27 |
| [프로그래머스][JAVA][Lv. 0] 대소문자 바꿔서 출력하기 (0) | 2023.10.25 |