99클럽 코테 스터디 11일차 TIL - [프로그래머스] 카드 뭉치 (Java)

seri·2024년 7월 30일
0

코딩테스트 챌린지

목록 보기
36/62

📌 오늘의 학습 키워드

[프로그래머스] 카드 뭉치 (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/159994

📌 공부한 내용 본인의 언어로 정리하기

문제 탐색하기

입력 : String cards1[], card2[]
출력 : goal을 만들 수 있다면 Yes, 아니면 No 출력

가능한 시간복잡도

O(n)

알고리즘 선택

정렬

📌 코드 설계하기

  1. index1과 index2를 사용해 각각 cards1과 cards2 배열의 현재 위치를 추적한다. Length1, length2는 cards1, cards2의 배열의 끝을 확인하는데 사용된다.
  2. goal 배열의 각 요소에 대해, 해당 요소가 cards1의 현재 요소(cards1[index1])와 같은지, 또는 cards2의 현재 요소(cards2[index2])와 같은지를 검사한다.
  3. 만약 cards1[index1]이 goal의 현재 요소와 같다면, index1을 증가시켜 다음 요소로 넘어간다.
  4. 만약 cards2[index2]이 goal의 현재 요소와 같다면, index2를 증가시켜 다음 요소로 넘어간다.
  5. 두 배열 모두에 현재 요소와 일치하는 요소가 없다면, goal을 형성할 수 없으므로 "No"를 반환한다.

📌 오늘의 회고

어떤 문제가 있었고, 나는 어떤 시도를 했는지

없음

어떻게 해결했는지

없음

무엇을 새롭게 알았는지

없음

내일 학습할 것은 무엇인지

구현

📌 정답 코드

 public class Solution {
    public String solution(String[] cards1, String[] cards2, String[] goal) {
        int index1 = 0, index2 = 0;
        int length1 = cards1.length, length2 = cards2.length;

        for (String target : goal) {
            if (index1 < length1 && cards1[index1].equals(target)) {
                index1++;
            } else if (index2 < length2 && cards2[index2].equals(target)) {
                index2++;
            } else {
                return "No";
            }
        }
        return "Yes";
    }
}
profile
꾸준히 정진하며 나아가기

0개의 댓글