Algorithm Problem/JavaScript

[JavaScript] 프로그래머스 - 영어 끝말잇기(Summer/Winter Coding(~2018))

deo2kim 2020. 7. 26. 23:55
반응형

문제 해결

1. 앞단어의 뒷글자와 뒷단어의 앞글자를 비교하며 맞는지 확인하고

2. 사용한 단어는 따로 배열에 담아두고 확인한다.

3. 조건에 맞지 않는다면 게임을 종료

 

🌦 배열을 인덱싱하는 문제

 

🐱‍🏍 배열이나 스트링의 맨 뒤 인덱스를 선택하는 방법

파이썬에서는 보통 list[-1] 로 맨뒤 인덱스를 선택할 수 있으나

자바스크립트에서는 array[array.length - 1] 로 맨뒤 인덱스를 선택한다.

소스 코드

function solution(n, words) {
    var answer = [0, 0];
    // 이미 사용한 단어를 넣을 배열
    var usedWords = []
    // 1번 플레이어부터 시작
    usedWords.push(words[0])
    for (let i = 1; i < words.length; i++) {
        var beforeWord = words[i-1]
        var currentWord = words[i]
        // 이전단어의 맨 뒷글자와 현재단어의 맨 앞글자가 같고
        // 이전에 사용한적이 없는 단어라면
        if (beforeWord[beforeWord.length - 1] == currentWord[0]
            && usedWords.indexOf(currentWord) == -1) {
            // 계속 게임을 진행
            usedWords.push(currentWord)
        } else {
            // 그게 아니라면 몇번째 턴인지, 몇번째 플레이어 인지 계산해서 리턴해준다.
            var turn = parseInt(i / n) + 1
            var player = i % n + 1
            return answer = [player, turn]
        }
    }
    return answer;
}

console.log(solution(3, ['tank', 'kick', 'know', 'wheel', 'land', 'dream', 'mother', 'robot', 'tank'])); // [3,3]

 

출처: 프로그래머스

문제: https://programmers.co.kr/learn/courses/30/lessons/12981?language=javascript

 

코딩테스트 연습 - 영어 끝말잇기

3 [tank, kick, know, wheel, land, dream, mother, robot, tank] [3,3] 5 [hello, observe, effect, take, either, recognize, encourage, ensure, establish, hang, gather, refer, reference, estimate, executive] [0,0]

programmers.co.kr

 

반응형