ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

์„ ํ–‰ ์Šคํ‚ฌ์ด๋ž€ ์–ด๋–ค ์Šคํ‚ฌ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— ๋จผ์ € ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์Šคํ‚ฌ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ๊ฐ€ ์ŠคํŒŒํฌ → ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ฌ๋”์ผ๋•Œ, ์ฌ๋”๋ฅผ ๋ฐฐ์šฐ๋ ค๋ฉด ๋จผ์ € ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๊ณ , ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ๋ฅผ ๋ฐฐ์šฐ๋ ค๋ฉด ๋จผ์ € ์ŠคํŒŒํฌ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ„ ์ˆœ์„œ์— ์—†๋Š” ๋‹ค๋ฅธ ์Šคํ‚ฌ(ํž๋ง ๋“ฑ)์€ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ŠคํŒŒํฌ → ํž๋ง → ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ฌ๋”์™€ ๊ฐ™์€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ฌ๋” → ์ŠคํŒŒํฌ๋‚˜ ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ŠคํŒŒํฌ → ํž๋ง → ์ฌ๋”์™€ ๊ฐ™์€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ skill๊ณผ ์œ ์ €๋“ค์ด ๋งŒ๋“  ์Šคํ‚ฌํŠธ๋ฆฌ1๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด skill_trees๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์กฐ๊ฑด

  • ์Šคํ‚ฌ์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐํ•˜๋ฉฐ, ๋ชจ๋“  ๋ฌธ์ž์—ด์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํ‚ฌ ์ˆœ์„œ์™€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๋ฌธ์ž์—ด๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, C → B → D ๋ผ๋ฉด CBD๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค
  • ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ skill์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 26 ์ดํ•˜์ด๋ฉฐ, ์Šคํ‚ฌ์€ ์ค‘๋ณตํ•ด ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • skill_trees๋Š” ๊ธธ์ด 1 ์ด์ƒ 20 ์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • skill_trees์˜ ์›์†Œ๋Š” ์Šคํ‚ฌ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • skill_trees์˜ ์›์†Œ๋Š” ๊ธธ์ด๊ฐ€ 2 ์ด์ƒ 26 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ด๋ฉฐ, ์Šคํ‚ฌ์ด ์ค‘๋ณตํ•ด ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

 skill                                              skill_trees                                        return

"CBD" ["BACDE", "CBADF", "AECB", "BDA"] 2

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  • BACDE: B ์Šคํ‚ฌ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— C ์Šคํ‚ฌ์„ ๋จผ์ € ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฝ๋‹ˆ๋‹ค.
  • CBADF: ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.
  • AECB: ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.
  • BDA: B ์Šคํ‚ฌ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— C ์Šคํ‚ฌ์„ ๋จผ์ € ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

 

 

๋น„๊ต๋ฅผ ํ•ด์•ผํ•˜๋‹ˆ๊นŒ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.

๋ฌธ์ž์—ด์ด ๊ฐ™์œผ๋ฉด ํ•ด๋‹น๊ฐ’์„ ๋น„์›Œ๋‚ด์„œ ์Šคํƒ์ด ๋น„์›Œ์ง€๋ฉด answer๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ–ˆ๋‹ค.

 

import java.util.Stack;

class CodeRunner{
    
    public static int solution(String skill, String[] skill_trees) {
        int answer = 0;
        
        Stack stack = new Stack();
        
        for(int i = skill.length() - 1; i >= 0; i--) {
            stack.push(skill.charAt(i));
        }
        
        for(int j = 0; j < skill_trees.length; j++) {
            String st = skill_trees[j];
            System.out.println("st๊ฐ’ : " + st);

            
            System.out.println("ํƒ€์ž…ํ™•์ธ : " + stack.peek().getClass().getName());
            System.out.println("๋งจ์œ„ ์Šคํƒ : " + stack.peek());
            System.out.println("st 0๋ฒˆ์งธ ๊ธ€์ž : " + st.charAt(0));
 
            
            
            int a = 0;
            while(stack.isEmpty() == false) {
                
                if(stack.peek()==st.charAt(a)) {
                    stack.pop();
                    answer++;
                }
            }
            
         
        }
        
        
        return answer;
    }
    
	public static void main(String[] args){
		String skill = "CBD";
        String[] skill_trees = {"BACDE", "CBADF", "AECB", "BDA"};
        
        int result = solution(skill,skill_trees);
        
        System.out.println(result);
	}
}

์Šคํƒ์œผ๋กœ ํ’€๋ฉด ์™œ ์•ˆ๋˜๋Š”๊ฑด๊ฐ€์š”

stack.peek()ํ•˜๋ฉด ํƒ€์ž…์ด Object๋ผ char์ด๋ž‘ ๋น„๊ต๊ฐ€ ์•ˆ๋œ๋‹ค

์–ด๋–ป๊ฒŒํ•˜์ง€

 

 

 

import java.util.Stack;

class Solution {
    public int solution(String skill, String[] skill_trees) {
        int answer = 0;
        
        //์Šคํƒ ์ƒ์„ฑ
        Stack<Character> stack = new Stack<>();
        
        //์Šคํƒ์— skill ๊ฐ’ ๋„ฃ๊ธฐ
        for(int i = skill.length() - 1; i >= 0; i--) {
            stack.push(skill.charAt(i));
        }
        
        //skill_trees
        for(int j = 0; j < skill_trees.length; j++) {
            //๋น„๊ต ๋ฌธ์ž์—ด ๋‹ด๊ธฐ
            String str = skill_trees[j];

            int a = 0;
            while(stack.isEmpty() == false) {
                if(stack.peek()==str.charAt(a)) {
                    stack.pop();
                    answer++;
                }
            }
        }
        
        return answer;
    }
}

์—๋Ÿฌ๋‚˜๋Š” ๊ฒƒ์€ ์ˆ˜์ •ํ–ˆ๋‹ค. ์Šคํƒ์— String์œผ๋กœ ๋ง๊ณ  charํ˜•์œผ๋กœ ๋งŒ๋“ค๋ ค๋ฉด Character๋ฅผ ์จ์„œ ์‚ฌ์šฉํ•ด์ค€๋‹ค.

๋„ˆ๋ฌด ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹คใ… ใ… 

 

 

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

import java.util.*;

class Solution {
    public int solution(String skill, String[] skill_trees) {
        int answer = 0;
        ArrayList<String> skillTrees = new ArrayList<String>(Arrays.asList(skill_trees));
        //ArrayList<String> skillTrees = new ArrayList<String>();
        Iterator<String> it = skillTrees.iterator();

        while (it.hasNext()) {
            if (skill.indexOf(it.next().replaceAll("[^" + skill + "]", "")) != 0) {
                it.remove();
            }
        }
        answer = skillTrees.size();
        return answer;
    }
}

 

๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€