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
반응형