문제
https://programmers.co.kr/learn/courses/30/lessons/49993
풀이
1. 알파벳 개수만큼의 원소를 가지는 int형 배열 rank
ASCII 코드를 고려했을 때, skill의 각 문자에 해당하는 인덱스에 순서를 저장하게 된다.
skill 안에 없는 알파벳은 자동으로 0으로 저장된다.
2. flags는 skill_trees의 각 문자열 원소들이 규칙을 잘 지켰는지에 대한 boolean 변수다.
- 0일 경우 상관이 없으므로 pass
- pos(1순위부터)와 skill_trees 원소의 문자가 같을 경우 순위인 pos는 +1
- skill에 있는 알파벳이면서 pos가 다른 경우(순위가 틀린 경우) flag는 false가 되고 for문에서 빠져나온다.
코드
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
int[] rank = new int[26];
for(int i=0; i<skill.length(); i++){
int idx = skill.charAt(i)-'A';
rank[idx] = i+1;
}
for(int i=0; i<skill_trees.length; i++){
int pos = 1;
boolean flag = true;
for(int j=0; j<skill_trees[i].length(); j++){
if(rank[skill_trees[i].charAt(j)-'A']==0){
continue;
}else if(rank[skill_trees[i].charAt(j)-'A']==pos){
pos++;
continue;
}else{
flag = false;
break;
}
}
if(flag==true)
answer++;
}
return answer;
}
}
'Preparing Coding Test > Programmers L2' 카테고리의 다른 글
[Java/프로그래머스] 카카오프렌즈 컬러링북 (0) | 2020.08.15 |
---|---|
[Java/프로그래머스] 멀쩡한 사각형 (0) | 2020.08.12 |
[Java/프로그래머스] 프린터 (0) | 2020.08.12 |
[Java/프로그래머스] 다리를 지나는 트럭 (0) | 2020.08.10 |
[Java/프로그래머스] 124 나라의 숫자 (0) | 2020.08.07 |