-
[프로그래머스] 카드 뭉치 - Java알고리즘 문제 풀이 2024. 4. 22. 02:01
문제 - 카드 뭉치
https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
제한사항
입출력 예
cards1 cards2 goal result ["i", "drink", "water"] ["want", "to"] ["i", "want", "to", "drink", "water"] "Yes" ["i", "water", drink"] ["want", "to"] ["i", "want", "to", "drink", "water"] "No"
접근 방법
- 조건중에 카드를 사용하지 않고 다음 카드로 넘어갈 수 없다, 한 번 사용한 카드는 다시 사용할 수없다에서 자료구조를 생각했을때 Queue를 사용하면 되겠다라고 생각했다
- 차례대로 넣고 빼는 형식이라 우선순위 큐보다는 구현체로 LinkedList를 선택했다
코드
import java.util.*; class Solution { public String solution(String[] cards1, String[] cards2, String[] goal) { Queue<String> cards1Queue = arrayToQueue(cards1); Queue<String> cards2Queue = arrayToQueue(cards2); for (String value : goal) { if (Objects.equals(cards1Queue.peek(), value)) { cards1Queue.poll(); } else if (Objects.equals(cards2Queue.peek(), value)) { cards2Queue.poll(); } else { return "No"; } } return "Yes"; } public Queue<String> arrayToQueue(String[] array) { return new LinkedList<>(Arrays.asList(array)); } }
풀고 느낀점
1. 이런 문제 같은 경우에는 그냥 단순 반복문을 사용하여 풀수 있지만 괜찮은 자료구조를 생각해서 풀면 좋을 것 같다
2. 전에는 무작정 문제 풀려고만 했었는데 자료구조를 알고 나니 문제 푸는데에 좀 더 편리해지고 효율적으로 코드를 작성할 수 있게 되었다
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 2161 카드1 - Java (0) 2024.04.24 [백준] 2470 두 용액 - Java (0) 2024.04.22 [프로그래머스] 부족한 금액 계산하기 - Java (0) 2024.04.21 [프로그래머스] H-Index -Java (0) 2024.04.19 [백준] 1654 랜선 자르기 -Java (1) 2024.04.18