티스토리 뷰
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
Queue<Character> queue = new LinkedList<Character>();
for(int i=0; i<skill_trees.length; i++){
for(int k=0; k<skill.length(); k++){
queue.add(skill.charAt(k));
}
if(check(skill_trees[i], queue)){
answer++;
}
queue.clear();
}
return answer;
}
public boolean check(String skill, Queue<Character> queue){
for(int i=0; i<skill.length(); i++){
char target = skill.charAt(i);
if(queue.contains(target)){
Character q = queue.poll();
if(!q.equals(target)) return false;
}
}
return true;
}
}
check함수를 통해 가능한 스킬트리인지 확인한다.
큐에 포함되어 있는데 가장 헤드에 있는 값이 target과 다르다면 false를 반환하고 이외에는 true를 반환한다.
큐에 포함되어 있지 않은 스킬은 확인하지 않으며
poll()함수를 통하여 지워나가면서 진행한다.
1. 큐에 "CBD"가 저장되어있고 검사하는 skill이 "BACDE"라면
B 첫 IF문 들어가고 두번째 IF문에서 C와 B가 같지 않으므로 false 반환
2. 큐에 "CBD"가 저장되어있고 검사하는 skill이 "CBADF"라면
C 첫 IF문 들어가고 두번째 IF문은 들어가지 않음 + 큐에 "BD"만 남음
B 첫 IF문 들어가고 두번째 IF문은 들어가지 않음 + 큐에 "D"만 남음
A 무시
D 첫 IF문 들어가고 두번째 IF문은 들어가지 않음 + 큐가 비어있음
F 무시
반복문 다돌고 true 반환
3. 큐에 "CBD"가 저장되어있고 검사하는 skill이 "AECB"라면
A 무시
E 무시
C 첫 IF문 들어가고 두번째 IF문은 들어가지 않음 + 큐에 "BD"만 남음
B 첫 IF문 들어가고 두번째 IF문은 들어가지 않음 + 큐에 "D"만 남음
반복문 다돌고 true 반환
'Algorithm > java' 카테고리의 다른 글
[Java][프로그래머스] 모음 사전 (0) | 2023.05.08 |
---|---|
[Java][프로그래머스] 방문 길이 (0) | 2023.05.08 |
[Java][프로그래머스] 연속 부분 수열 합의 개수 (0) | 2023.05.04 |
[Java][프로그래머스] n^2 배열 자르기 (0) | 2023.05.04 |
[Java][프로그래머스] 기능개발 (0) | 2023.05.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- swiper
- 이메일
- level2
- 비밀번호 일치
- 슬라이드
- react
- 완전탐색
- Java
- 브루트포스
- 스타일
- 모음 사전
- 방문 길이
- 회원가입
- 커스텀훅
- 기능개발
- 스킬트리
- 정규식
- 할인행사
- 연속 부분 수열 합의 개수
- Enter키
- 배열 자르기
- 자바
- 자동 하이푼
- 알고리즘
- 프로그래머스
- input
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함