Programmers 영어 끝말잇기 Javascript

cptkuk91·2022년 9월 12일
1

Algorithm

목록 보기
95/161

문제

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

제한 사항

  • 끝말잇기에 참여하는 사람의 수 n은 2 이상 10 이하의 자연수입니다.
  • words는 끝말잇기에 사용한 단어들이 순서대로 들어있는 배열이며, 길이는 n 이상 100 이하입니다.
  • 단어의 길이는 2 이상 50 이하입니다.
  • 모든 단어는 알파벳 소문자로만 이루어져 있습니다.
  • 끝말잇기에 사용되는 단어의 뜻(의미)은 신경 쓰지 않으셔도 됩니다.
  • 정답은 [ 번호, 차례 ] 형태로 return 해주세요.
  • 만약 주어진 단어들로 탈락자가 생기지 않는다면, [0, 0]을 return 해주세요.

풀이

function solution(n, words) {
	let result = [0, 0];
    
    for(let i = 0; i < words.length; i++){
    	// 단어를 하나씩 빼낸다.
        let word = words[i];
        let person = i % n + 1;
        let checkTurn = Math.ceil((i + 1) / n);
        
        if(i > 0){
        	// 글자 마지막 단어를 알 수 있다.
        	let last = words[i - 1].split("").pop();
        	if(i > words.indexOf(word) || words[i][0] !== last){
            	result = [person, checkTurn];
                break;
            }
        }
    }
    return result;
}

반환할 result = [0, 0]을 선언한다.
for문을 통해 words.length 까지 반복문을 돌리고, 몇 번 차례의 사람인지 구하기 위해 person을 위와 같이 선언 후 구한다.
checkTurn의 경우 Math.ceil을 통해 무조건 올림으로 해서 구하면 몇번째 turn 에서 걸렸는지 알 수 있다.

단어를 끝까지 가기 위해 if문 i > 0을 통해 진행하고 글자 마지막 단어를 알기 위해서 last = words[i - 1].split("").pop()을 사용한다. 이러면 글자 마지막 단어가 무엇인지 알 수 있다.

words.indexOf[word]를 통해 진행 현황을 파악할 수 있고, words[i][0] 끝말잇기에서 last 단어와 비교해 같지 않다면 얘가 틀린거다.

break는 전부 통과했을 때를 대비해 break를 사용했고, return result를 하면 문제가 원하는 값을 출력할 수 있다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글