프로그래머스 코딩테스트 level-1

문제 설명

Connie는 영어 단어가 적힌 두 묶음의 카드를 받았습니다.

Conny는 다음 규칙을 사용하여 카드의 단어에서 원하는 순서로 일련의 단어를 생성할 수 있는지 알고 싶어합니다.

  • 선택한 덱에서 원하는 순서대로 카드를 플레이합니다.

  • 한 번 사용한 카드는 다시 사용할 수 없습니다.

  • 카드를 사용하지 않고는 다음 카드로 이동할 수 없습니다.

  • 기존 데크의 어순을 변경할 수 없습니다.

예를 들어 첫 번째 데크에 (“i”, “drink”, “water”)가 순서로 있고 두 번째 데크에 (“want”, “to”)가 (“i”, “when”, ” to “, “drink”, “water”), 첫 번째 데크에서 “i”를 사용한 다음 두 번째 데크에서 “want”와 “to”를 사용한 다음 “drink”와 “water”라는 단어를 순서대로 사용합니다.

두 번째 스택은 모든 단어 시퀀스를 만들 수 있습니다.

문자열 배열 카드1, cards2와 원하는 단어 필드 타겟을 파라미터로 주면, 지도1 및 카드에 적힌 단어로2 목표를 만들 수 있으면 ‘예’를 반환하고 할 수 없으면 ‘아니요’를 반환하는 해결 기능을 완료하세요.


제한

  • 1 ≤ 카드 길이1, 카드 길이2 ≤ 10
    • 1 ≤ 카드 길이1(i), 카드 길이2(i) ≤ 10
    • 지도1 및 cards2에는 다른 단어만 있습니다.

  • 2 ≤ 대상 길이 ≤ 카드 길이1 + 카드 길이2
    • 1 ≤ 대상 길이(i) ≤ 10
    • 목표의 요소는 지도1 및 그것은 cards2의 요소로만 구성됩니다.

  • 카드1, 카드2, Goal의 문자열은 모두 소문자입니다.


I/O 예제 카드1cards2goalresult

(“저는 물을 마 십니다”) (“원한다”) (“나는 물을 마시고 싶어”) “예”
(“나”, “물”, “음료”) (“원한다”) (“나는 물을 마시고 싶어”) “아니요”

I/O 예시 설명

I/O 예제 #1

텍스트와 동일합니다.

I/O 예제 #2

maps1에서 “i”를 사용하고 cards2에서는 “i want to”와 함께 “want”와 “to”를 사용할 수 있지만 “drink” 앞에 “water”를 사용해야 하므로 문장을 완성할 수 없습니다.

따라서 “아니오”를 반환합니다.

간단한 접근으로 쉽게 풀 수 있는 문제였습니다.

이 문제는 대상 배열의 cards1과 cards2의 인덱스를 순차적으로 늘려가며 비교할 수 있는 문제입니다.

class Solution {
    public String solution(String() cards1, String() cards2, String() goal) {
        String answer = "Yes";

        int a = 0;
        int b = 0;
        for(int i=0; i<goal.length; i++){

            if(a < cards1.length && cards1(a).equals(goal(i))){
                a ++;
            }else if(b < cards2.length && cards2(b).equals(goal(i))){
                b ++;
            }else answer="No";
        }
        
        
        return answer;
    }
}

위의 솔루션을 고려하면 대상의 인덱스가 1씩 증가하면 card1 또는 card2의 인덱스가 1씩 증가합니다.

목표는 목표가 1 증가할 때 카드1 또는 카드2가 1씩 증가하는 방식입니다.

문제의 핵심은 이 세 가지 어레이를 “순서대로” 꺼내야 한다는 것입니다.

배열을 순차적으로 증가시킬 때, cards1과 cards2의 두 인덱스가 목표와 같지 않다면 대답을 no로 변경하십시오.

문제가 될거야

728×90