본문 바로가기
[ 다먹살 ]/- Coding

[프로그래머스] 레벨1 카드 뭉치

by 엉망으로살기 2023. 2. 23.
반응형

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

 

프로그래머스

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

programmers.co.kr

 
처음에는 배열이나 리스트 형태로 입력값을 받아서 처리하려고 했었다. 구현을 하다보니 인덱스도 그렇고, 카드뭉치를 번갈아서 사용해야한다는 점 때문에 flag형태의 변수를 따로 만들어야할 필요성이 있다고 느꼈었는데 다시 생각해보니 Queue나 Stack의 자료 형태를 이용하면 훨씬 더 수월하겠다는 생각이 들었다.
일단 이 문제는 카드를 입력받은 순서대로 차례대로 뽑아야하기 때문에 Queue를 사용헀고, 그 밖의 처리는 반복문과 조건문을 이용하면 해결할 수 있는 문제였다.
 


문제 및 입출력


코드

import java.util.LinkedList;
import java.util.Queue;

class Solution
{
    public String solution(String[] cards1, String[] cards2, String[] goal)
    {
        Queue<String> one = new LinkedList<String>();
        Queue<String> two = new LinkedList<String>();
        Queue<String> target = new LinkedList<String>();
        
        for(int i=0; i<cards1.length; i++)
        {
            one.add(cards1[i]);
        }
        for(int i=0; i<cards2.length; i++)
        {
            two.add(cards2[i]);
        }
        for(int i=0; i<goal.length; i++)
        {
            target.add(goal[i]);
        }
        while(!target.isEmpty())
        {
            if(one.size()!=0 && one.peek().equals(target.peek()))
            {
                one.poll();
                target.poll();
            }
            else if(two.size()!=0 && two.peek().equals(target.peek()))
            {
                two.poll();
                target.poll();
            }
            else
            {
                return "No";
            }
        }
        
        return "Yes";
    }
}
 

반응형

'[ 다먹살 ] > - Coding' 카테고리의 다른 글

[프로그래머스] 레벨2 마법의 엘리베이터  (0) 2023.02.28
[백준] 11723 집합  (2) 2023.02.27
[백준] 1731 추론  (0) 2023.02.23
[백준] 2563 색종이  (0) 2023.02.22
[백준] 11726 2xn 타일링  (0) 2023.02.22

댓글