영어 끝말잇기

Happhee·2022년 3월 21일
0

[ Lv2 ] programmers

목록 보기
31/32
post-thumbnail

📝 영어 끝말잇기

🖥 나의 JS코드

✨ 첫번째 시도

우선, 처음으로 등장한 단어가 아니면 앞뒤 단어가 끝말잇기가 되는지 확인할 필요가 없으므로, 이를 먼저 체크하였다.

이후, 직전 단어의 마지막 알파벳과 현재 단어의 첫번째 알파벳을 비교하여, 틀리면 return하도록 하였다.
이때, return되는 배열은 [ 번호, 차례 ] 이다.

따라서 번호는 현재 index를 명수로 나눈 나머지에 1를 더하고, 차례는 이를 명수로 나눈 값을 무조건 반올림하여 나타낸다.

해당 사항이 없을 경우, [ 0, 0 ] 을 반환하면 된다.

최종 코드이다.👇

function solution(n, words) {
  for (let index = 1; index < words.length; index += 1) {
    // 처음으로 등장한 단어가 아니면
    if (index !== words.indexOf(words[index]))
      return [(index % n) + 1, Math.ceil((index + 1) / n)];
    // 끝말잇기 비교
    if (words[index - 1].lastIndexOf(words[index][0]) !== words[index-1].length-1)
      return [(index % n) + 1, Math.ceil((index + 1) / n)];
      
  }
  return [0, 0];
}

✨ 두번째 시도

우선, 끝말잇기를 비교하는 코드가 직관적이지 않는 부분을 수정하였고, return되는 값이 같으므로 이에 대한 함수를 따로 작성하였다.

최종 코드이다.👇

function getResult(index){
  return [(index%n)+1, Math.ceil((index+1)/n)];
}
function solution(n, words) {
  
  for (let index = 1; index < words.length; index += 1) {
    // 처음으로 등장한 단어가 아니면
    if (index !== words.indexOf(words[index])) 
      return getResult(index);
    
    // 끝말잇기 비교
    if (words[index-1][words[index - 1].length-1] !== words[index][0])
      return getResult(index);
  }
  return [0, 0];
}
profile
즐기면서 정확하게 나아가는 웹프론트엔드 개발자 https://happhee-dev.tistory.com/ 로 이전하였습니다

0개의 댓글