728x90
🔗 문제 링크
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 문제 개요
두 개의 카드 뭉치가 주어지고, 각 카드 뭉치의 순서는 변경할 수 없다.
또한 카드를 건너뛰면서 사용할 수도 없다.
주어진 goal 배열을 순서대로 만들 수 있는지 판단하여 가능하면 "Yes", 불가능하면 "No"를 반환하는 문제
📌 접근 방법
카드 뭉치의 순서를 변경할 수 없으므로 각 카드 뭉치에서 현재 사용할 수 있는 카드 위치만 관리하면 된다.
이를 위해 다음 두 개의 인덱스를 사용했다.
int index1 = 0;
int index2 = 0;
- index1 : cards1의 현재 위치
- index2 : cards2의 현재 위치
goal을 순서대로 탐색하면서 현재 단어가 cards1 또는 cards2의 현재 카드와 일치하는지 확인한다.
📌 핵심 아이디어
현재 목표 단어가 일 때
goal[i]
1. cards1의 현재 카드와 일치하면 index 추가
goal[i].equals(cards1[index1])
index1++;
2. cards2의 현재 카드와 일치하면 index 추가
goal[i].equals(cards2[index2])
index2++;
3. 둘 다 일치하지 않는 경우
현재 단어를 만들 방법이 없으므로
return "No";
📌 전체 코드
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
int index1 = 0;
int index2 = 0;
for(int i = 0; i < goal.length; i++){
if(index1 < cards1.length && goal[i].equals(cards1[index1])){
index1++;
} else if(index2 < cards2.length && goal[i].equals(cards2[index2])){
index2++;
} else {
return "No";
}
}
return "Yes";
}
}
📄 정리
이 문제의 핵심은 카드 뭉치의 순서를 유지해야 한다는 점이다.
따라서 현재 사용할 수 있는 카드 위치만 관리하면 되며, 별도의 큐 자료구조 없이 인덱스 두 개만으로 해결할 수 있다.
순서를 유지하면서 데이터를 소비하는 유형의 문제에서는 큐 또는 인덱스 기반 접근 방식을 떠올리는 연습이 중요하다.
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 명예의 전당 (1) JAVA 풀이 (우선순위 큐, PriorityQueue) (0) | 2026.06.05 |
|---|---|
| 프로그래머스 콜라 JAVA 풀이 (구현, 시뮬레이션) (0) | 2026.06.04 |
| 프로그래머스 숫자 문자열과 영단어 JAVA 풀이 (문자열, replace) (0) | 2026.06.02 |
| [프로그래머스] K번째수 JAVA 풀이 (알고리즘, 시간복잡도) (0) | 2026.05.28 |
| 프로그래머스 푸드 파이트 대회 JAVA 풀이 (0) | 2026.05.27 |