프로그래머스 #Javascript - 영어 끝말잇기

SSO·2020년 5월 11일
0

프로그래머스 Lv2

목록 보기
36/46

문제

https://programmers.co.kr/learn/courses/30/lessons/12981

풀이

function solution(n, words) {
    var answer = [];
    var number = 0;
    var order = 0;

    for(var i=1; i<words.length; i++){
    // 끝말을 잇지 않은 경우   || 중복된 단어가 있는 경우
        var subArr = words.slice(0,i);
    	if((words[i-1].substring(words[i-1].length-1) !== words[i][0])|| (subArr.some(word=> word === words[i]))){
        if((i+1)%n ===0){
          number = n;
        }else{
         number = (i+1)%n ;
      	}
        order = Math.ceil((i+1)/n);
        break;
      }
    }
    if(number===0 && order===0){
        answer = [0,0];
    }else{
        answer = [number,order ];
    }
  
    return answer;
}

더 생각해보기

오래걸릴 문제가 아닌데 오래 걸림.
1. 처음에 n을 고려하지 않음 -> 문제 꼼꼼히 읽을 것
2. 처음 실패 -> 두 조건의 순서를 내가 임의로 정함(if문의 순서가 조건 실행의 순서가 되기 때문 -> || 조건 이용
3. number, order를 구하는 방법은 두 조건에 대해 동일
4. 나머지가 0인 경우 예외 처리

참고사항

다른 사람의 풀이 -> 중복단어 체크시 arr.some()대신 arr.indexOf()이용

profile
happy

0개의 댓글