본문 바로가기

카테고리 없음

프로그래머스_Level1_카드뭉치

풀이:

 

class Solution {
    public String solution(String[] cards1, String[] cards2, String[] goal) {
        String answer = "Yes";
        int firstL=0;
        int secondL=0;
        for(int i=0; i<goal.length; i++){
            
            if(firstL<cards1.length&&goal[i].equals(cards1[firstL])){
                firstL++;
                continue;
            }
            if(secondL<cards2.length&&goal[i].equals(cards2[secondL])){
                secondL++;
                continue;
            }
            answer="No";
            return answer;
        }
        answer="Yes";
        return answer;
    }
}

 

맨 처음 문제를 잘못 이해했을때는 cards1의 어느 특수한 index에 cards2를 넣어야된다고 착각해서 정렬로 접근했다.

하지만 생각을 다시해보니 이건 결국 goal이라는 요리 방법이 있고 cards1과 cards2에는 각각 그 요리 방법에 해당하는 재료들이 있는거라고 생각해보면 위와 같은 풀이가 나온다.

cards1 혹은 cards2에 원하는 값이 없다면 continue가 실행돼지않고 이는 곧 goal을 만들 재료가 두 배열 모두 없다는 것이다.

그렇지 않다면 continue를 통해 for문을 지속적으로 return하지않고 순환하여 전체 for문을 빠져나오게 된다.

그렇다는 것은 결국 goal에 해당하는 요리를 만들 수 있다는 것으로 Yes를 리턴해주면 된다.

최근 문제를 풀떄마다 뭔가 복잡하게 생각하는 경향이 있는거 같은데 이 버릇을 좀 고치고 쉽게 쉽게 생각을 먼저 해보는 습관을 길러야겠다.