카드 뭉치

Sheryl Yun·2023년 7월 11일
0

문제 링크🔗

처음 풀이

  • goal을 돌며 cards의 첫 번째 값을 꺼내서 비교하고 if문 2개를 별개로 썼다.
  • 문제점: 한쪽에 없으면 다른 한쪽을 봐야 하는, 각 카드 뭉치를 보는 것이 별개의 상관 관계가 아니었다.
    • if문만 2개 쓰는 게 아니라 if-elseIf-else문을 활용해야 했다.

새로운 풀이

  • goal을 돌면서 단어를 하나씩 꺼낸다.
  • 각 카드 뭉치의 0번째가 꺼낸 단어와 일치하면 해당 카드 뭉치의 맨 앞의 값을 꺼낸다. (shift())
  • 두 카드 뭉치에 모두 없으면 goal 배열 조합을 만들 수 없는 경우이므로 바로 'No'를 리턴한다.

    두 번째, 세 번째 과정은 if-elseIf-else문으로 진행한다.

function solution(cards1, cards2, goal) {
  for (let word of goal) {
    if (cards1[0] === word) cards1.shift();
    else if (cards2[0] === word) cards2.shift();
    else return  'No'
  }

  return 'Yes';
}

다른 풀이

  • 인덱스 활용
  • 똑같이 if-elseIf-else문을 사용하되, 카드 뭉치의 index번째에 goal의 단어가 있으면 다음 비교를 위해 index를 1칸씩 옆으로 옮김
function solution(cards1, cards2, goal) {
    let answer = 'Yes';
    
    let index1 = 0;
    let index2 = 0;
    
    for (let word of goal) {
        if (cards1[index1] === word) {
            index1++;
        } else if (cards2[index2] === word) {
            index2++;
        } else {
            return 'No';
        }
    }
    
    return answer;
}

** 7월 11일부터 7월 14일까지 채용 과제를 진행하여 4개의 포스팅을 한번에 올립니다.

profile
영어강사, 프론트엔드 개발자를 거쳐 데이터 분석가를 준비하고 있습니다 ─ 데이터분석 블로그: https://cherylog.tistory.com/

0개의 댓글