비트를 쪼개는 개발자

allen321@naver.com

코딩테스트

C# [프로그래머스] Lv.1 카드 뭉치

MozarTnT 2023. 12. 26. 22:07
728x90
반응형

 

 

 

 

using System;
using System.Collections.Generic;

public class Solution
{
    public string solution(string[] cards1, string[] cards2, string[] goal)
    {
        //goal에 있는 값이 각 인덱스 순서대로 card1이나 card2에 있어야함 
        
        Queue<string> queue1 = new Queue<string>(); // card1 확인할 queue 값
        Queue<string> queue2 = new Queue<string>(); // card2 확인할 queue 값

        string answer = "";

        foreach (string card in cards1) // card1 배열을 queue 1에 값 넣어주기
        {
            queue1.Enqueue(card);
        }

        foreach (string card in cards2) // card2 배열을 queue2에 값 넣어주기
        {
            queue2.Enqueue(card);
        }

        for(int i = 0; i < goal.Length; i++) // goal의 길이만큼 각 인덱스별로 
        {
            if (queue1.Count != 0) // queue1의 값이 모두 뽑힌 상황이 아니라면
            {
                string check1 = queue1.Peek(); // 뺄 값을 체크해보고

                if(check1 == goal[i]) // goal의 i번째 인덱스와 확인 후 같은 단어라면
                {
                    queue1.Dequeue(); // 값을 빼기

                    continue; // 반복
                }
            }

            if (queue2.Count != 0) // queue2의 값이 모두 뽑힌 상황이 아니라면
            {
                string check2 = queue2.Peek(); // 뺄 값을 체크해보고

                if (check2 == goal[i]) // goal의 i번째 인덱스와 확인 후 같은 단어라면
                {
                    queue2.Dequeue(); // 값을 빼기

                    continue;  // 반복
                }
            }

            answer = "No"; // 해당 조건을 한번이라도 모두 만족하지 않았다면 goal의 단어 배열 순서대로 나올 수 없음.
            return answer;
        }

        answer = "Yes"; 
        
        return answer;
    }
}

728x90
반응형