Notice
Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Día de Ruru

20230612 TIL 본문

항해99/TIL

20230612 TIL

공대루루 2023. 6. 13. 02:07

코딩테스트 1단계 카드뭉치

코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다.
원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다.한 번 사용한 카드는 다시 사용할 수 없습니다.카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다.기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다.

입출력 예
cards1 cards2 goal result
["i", "drink", "water"] ["want", "to"] ["i", "want", "to", "drink", "water"] "Yes"
["i", "water", "drink"] ["want", "to"] ["i", "want", "to", "drink", "water"] "No"

나의 풀이 

일단 card1의 값들의 위치와 goal에서의 위치를 비교했을 때 순서가 같다면 yes이고 순서가 다르다면 no를 출력하면 될 것이라고 생각했다. card1를 다 검사하면 card2도 검사하는 방식으로 코드를 작성했지만 3개의 테스트를 통과하지 못했다. 

function solution(cards1, cards2, goal) {
    const num = cards1.length -1
    const num2 = cards2.length -1
    for (let i = 0;i<num;i++){
        if(goal.indexOf(cards1[i]) < goal.indexOf(cards1[i+1])){
            continue;
        }else{
            return "No"
            break;
        }
    }
    for (let i = 0;i<num2;i++){
        if(goal.indexOf(cards2[i]) < goal.indexOf(cards2[i+1])){
            continue;
        }else{
            return "No"
            break;
        }
    }
    return "Yes"
}

테스트케이스를 찾아봤더니 card1 과 card2의 모든 문자를 사용하지 않고 goal을 만드는 경우라고 한다. 이 경우, card1에는 있지만 goal에는 없는 단어가 생기기 때문에 if 구문으로 해결할 수 없게된다.

다른 사람의 풀이

function solution(cards1, cards2, goal) {

    for(const s of goal) {

        if(cards1[0] == s) {
            cards1.shift();
        } else if(cards2[0] == s) {
            cards2.shift();
        } else {
            return "No"
        }
    }

    return "Yes";
}

goal에 있는 문자열을 하나씩 판별하는 방법으로,cards1에 해당하는 문자라면 cards1에서 제거하고, cards2에 해당하는 문자라면 cards2에서 제거하며 yes와 no를 판별한다. 진짜 간단하고 확실한 방법이다..... 난 왜 저런 생각이 떠오르지 않는가 흑

 

'항해99 > TIL' 카테고리의 다른 글

20230618 TIL  (0) 2023.06.19
20230615 TIL  (1) 2023.06.18
20230523 TIL  (0) 2023.05.24
20230518 TIL  (0) 2023.05.18
20230509 TIL  (0) 2023.05.10
Comments