[프로그래머스] 스킬트리
2020. 3. 24. 17:28ㆍ프로그래머스/LEVEL 2
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
HashMap<Character,Integer> map = new HashMap<Character,Integer>();
for(int i=0; i<skill.length(); i++){
map.put(skill.charAt(i),i+1);
}
for(int i=0; i<skill_trees.length; i++){
boolean temp = true;
int flag = 1;
for(int j=0; j<skill_trees[i].length(); j++){
if(map.get(skill_trees[i].charAt(j))==null){
continue;
}else if(map.get(skill_trees[i].charAt(j))==flag){
flag++;
}else{
temp=false;
}
}
if (temp == true){
answer ++;
}
}
return answer;
}
}
----------------------------------------------------------------------------------------------------------------------------
2020.06.25
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
int flag = 0;
Map<Character, Integer> skillTurn = new HashMap<>();
for(int i=0; i<skill.length(); i++){
skillTurn.put(skill.charAt(i),i);
}
for (int i=0; i<skill_trees.length; i++){
for(int j=0; j<skill_trees[i].length(); j++){
if(j==skill_trees[i].length()-1){
if(skillTurn.containsKey(skill_trees[i].charAt(j))){
if(flag == skillTurn.get(skill_trees[i].charAt(j))){
answer++;
break;
}
}else{
answer++;
break;
}
}
if(skillTurn.containsKey(skill_trees[i].charAt(j))){
if(flag==skillTurn.get(skill_trees[i].charAt(j))){
flag++;
continue;
} else{
break;
}
} else{
continue;
}
}
flag=0;
}
return answer;
}
}
1. 같은 아이디어로 풀었지만 전에 푼 것이 훨씬 코드가 간단했다.
2. 요점은 순서대로 map에 저장하고, skill_trees에 있는 문자열을 읽으며, map에 저장된 순서를 어긋나지 않는다면 answer++해주는 방법이다.
'프로그래머스 > LEVEL 2' 카테고리의 다른 글
[프로그래머스] 가장 큰 수 만들기 (0) | 2020.03.25 |
---|---|
[프로그래머스] 기능개발 (0) | 2020.03.25 |
[프로그래머스] 타겟넘버 (0) | 2020.03.24 |
[프로그래머스] 주식가격 (0) | 2020.03.24 |
[프로그래머스] 탑 (0) | 2020.03.24 |