프로그래머스 | 카드 뭉치 (Java)

mul·2023년 2월 17일
1

알고리즘

목록 보기
23/65
post-custom-banner

🔒 문제

프로그래머스 Lv.1 연습문제 카드 뭉치

🔑 해결

문자열로 이루어진 배열 cards1, cards2와 원하는 단어 배열 goal이 매개변수로 주어질 때, cards1과 cards2에 적힌 단어들로 goal를 만들 수 있다면 "Yes"를, 만들 수 없다면 "No"를 return하는 solution 함수를 작성하는 문제이다.

cards1 배열과 cards2 배열에 대해 0으로 초기화한 변수 one, two를 선언하여 단어를 사용하였다면 one이나 two에 +1하여, 다음 goal 단어 검색 시 사용한 단어 다음 단어를 검색하도록 한다.

  1. 0으로 초기화한 one, two 변수 선언
  2. while문을 통해 goal 배열의 단어를 검색
  3. one이 cards1의 크기보다 작으면서 검색할 단어(goal)가 cards1[one]과 같으면 one++
  4. two가 cards2의 크기보다 작으면서 검색할 단어(goal)rk cards2[two]와 같으면 two++
  5. 검색할 단어(goal)과 같은 단어가 없거나 사용할 차례가 아니라면 원하는 단어 배열을 만들 수 없으므로 answer에 No를 저장하고 while문을 끝낸다.
  6. while문을 도중에 끝내지 않았다면 i++를 하여 goal의 다음 단어를 검색한다.
  7. while문을 다 돌고 나서 Yes로 초기화하였던 answer를 return

🔓 코드

class Solution {
    public String solution(String[] cards1, String[] cards2, String[] goal) {
        String answer = "Yes";
        
        int one = 0;
        int two = 0;
        
        int i = 0;
        while(i < goal.length) {
        	if (one < cards1.length && goal[i].equals(cards1[one])) {
        		one++;
        	} else if (two < cards2.length && goal[i].equals(cards2[two])) {
        		two++;
        	} else {
        		answer = "No";
        		break;
        	}
        	i++;
        }
        
        return answer;
    }
}
post-custom-banner

0개의 댓글