[프로그래머스] 스킬트리

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