[JAVA] 프로그래머스 : 카드 뭉치

조예빈·2024년 7월 21일
0

Coding Test

목록 보기
66/138

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

배열에서 카드를 순서대로만 뺄 수 있으며, 한 번에 한 배열에서 여러 장을 사용할 수 있으므로 큐를 사용해 주었다. 이 때, 큐를 두 개를 만들어 각각의 카드를 넣고 goals와 각 큐의 최상단 요소를 비교한 후 일치하면 poll을 해 주었다. 모든 큐의 최상단 요소와 일치하지 않는 경우에는 answer가 No가 되게 코딩을 해 주었다.

import java.util.*;

class Solution {
    public String solution(String[] cards1, String[] cards2, String[] goal) {
        //배열을 큐에 넣고, goal에서의 단어와 비교하면 됨
        Queue<String> cardsQueue1 = new LinkedList<>();
        Queue<String> cardsQueue2 = new LinkedList<>();
        String answer = "Yes";
        for(int i=0;i<cards1.length;i++){
            cardsQueue1.add(cards1[i]);
        }
        for(int i=0;i<cards2.length;i++){
            cardsQueue2.add(cards2[i]);
        }
        for(int i=0;i<goal.length;i++){
            String c1 = cardsQueue1.peek();
            String c2 = cardsQueue2.peek();
            if(!cardsQueue1.isEmpty() && c1.equals(goal[i])){
                cardsQueue1.poll();
            }else if(!cardsQueue2.isEmpty() && c2.equals(goal[i])){
                cardsQueue2.poll();
            }else{
                answer = "No";
            }
        }
        return answer;
    }
}

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글