주녘공부일지

[프로그래머스 C#] Lv.2 스킬트리 본문

Programmers - C#/CodingTest Lv.2

[프로그래머스 C#] Lv.2 스킬트리

주녘 2023. 8. 23. 17:12
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/49993

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 정답코드 및 핵심 아이디어, 유의사항

- 선행스킬만 확인하면 되는 문제로, 스택에 담아서 순서대로 체크만 하면 된다.

- Stack<T> : LIFO (후입선출) 방식

    using System;
    using System.Collections.Generic;

    public class Solution
    {
        public int solution(string skill, string[] skill_trees)
        {
            int answer = 0;

            Stack<Char> stack = new Stack<Char>();

            foreach (string str in skill_trees)
            {
                stack.Clear();

                for (int i = skill.Length - 1; i >= 0; i--)
                    stack.Push(skill[i]); // 스택에 선행스킬의 순서를 역순으로 담기

                bool isCheck = false;

                for (int i = 0; i < str.Length; i++)
                {
                    if (stack.Count == 0)
                        break;
                    else if (str[i] == stack.Peek()) // 선행스킬 발견
                        stack.Pop();
                    else if (stack.Contains(str[i])) // 선행스킬 미존재
                    {
                        isCheck = true;
                        break;
                    }
                }

                if (isCheck == false)
                    answer++;
            }

            return answer;
        }
    }
728x90