카드 뭉치 JAVA 풀이 (구현, 문자열)

2026. 6. 3. 23:54·코테(Solved.ac + Programmers)
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
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 명예의 전당 (1) JAVA 풀이 (우선순위 큐, PriorityQueue)
  • 프로그래머스 콜라 JAVA 풀이 (구현, 시뮬레이션)
  • 프로그래머스 숫자 문자열과 영단어 JAVA 풀이 (문자열, replace)
  • [프로그래머스] K번째수 JAVA 풀이 (알고리즘, 시간복잡도)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    정처기
    구현
    프로그래머스
    문자열
    배열
    알고리즘
    정보처리기사
    자바
    dp
    기출문제
    백준
    정렬
    정처기실기
    springboot
    Level2
    백엔드개발자
    정보처리기사 실기 기출문제
    실기
    브루트포스
    정처기오답노트
    수학
    solved.ac
    java
    완전탐색
    level1
    코딩테스트
    시뮬레이션
    자료구조
    level0
    피보나치
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
카드 뭉치 JAVA 풀이 (구현, 문자열)
상단으로

티스토리툴바