프로그래머스 level2에 해당하는 문제이다.
문제를 풀면서 반복문이 너무 많이 나와 굉장히 당황했었다.
하지만 for문을 쓸 때 continue와 break문을 적절하게 사용하면 for문이 크게 문제가 되지는 않는 것 같다.
정답을 맞추고 다른 사람들의 풀이를 보고 내가 너무 바보같이 느껴졌었다..
skill의 순서는 index값 자체이기 때문에 hash에 따로 정의하지 않았어도 됐다...정말 바보같지만 hash공부를 한번더 한셈치자!
for문 제어도 공부했으니까!
(hash의 valuer값으로 순서를 지정해주지 않고 그냥 char의 index값으로만 해결이 된다)
다른 사람들의 풀이중 hash를 쓴 사람은 없었고 점수 또한 좋게 받은 것에 의의를 둔다...!
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
HashMap<Character,Integer> hash=new HashMap<>();
int index=0;
boolean isSkill=true;
int answer=0;
for(int j=0;j<skill.length();j++){
hash.put(skill.charAt(j),j);
}
for(int i=0;i<skill_trees.length;i++) {
for(int k=0;k<skill_trees[i].length();k++) {
for(int j=0;j<skill.length();j++) {
if(skill_trees[i].charAt(k)==skill.charAt(j)) {
if(hash.get(skill_trees[i].charAt(k))==index) {
index++;
continue;
}else {
isSkill=false;
break;
}
}
}
if(isSkill==false)
break;
}
if(isSkill==true)
answer++;
isSkill=true;
index=0;
}
return answer;
}
}
'Computer Engineering > 알고리즘 테스트' 카테고리의 다른 글
프로그래머스 코팅테스트 문제: 체육복 (0) | 2020.04.24 |
---|---|
프로그래머스 코딩테스트 문제: 카펫 (0) | 2020.04.14 |
프로그래머스 코딩테스트 문제: 다리를 지나는 트럭 (0) | 2020.03.14 |
프로그래머스 코딩테스트 문제: 가장 큰 수 (0) | 2020.03.13 |
프로그래머스 코딩테스트 문제: 다음 큰 숫자 (0) | 2020.03.12 |