본문 바로가기

CS/알고리즘

[230326] 영어 끝말잇기

반응형

 

 

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

 

내 풀이

  1. i = 1 부터 시작해야 oldWord가 존재함
  2. oldWord = 현재 보는 단어의 이전 단어
  3. wod = 현재 단어
  4. 하나라도 조건을 만족하지 않으면 [번호, 차례]를 반환한다.
    1. 조건1: 한 글자인 경우 (word.length === 1)
    2. 조건2: 현재 단어의 첫 글자와 이전 단어의 마지막 글자와 다른 경우 (word[0] !== oldWord[oldWord.length - 1])
    3. 조건3: 현재 말한 단어가 이전 단어에 포함된 경우 (words.slice(0, i).includes(word))
    4. 반환하는 값
      1. 번호: (i % n) + 1
      2. 차례: Math.ceil((i+1) / n)
  5. 위의 조건이 모두 해당하지 않으면 탈락하지 않았으므로 [0, 0]을 반환한다.
function solution(n, words) {
    for(let i = 1; i < words.length; i++) {
        const oldWord = words[i - 1]
        const word = words[i];
        
        if(word.length === 1 || word[0] !== oldWord[oldWord.length - 1] || words.slice(0, i).includes(word)) return [(i % n) + 1, Math.ceil((i+1) / n)];
        
    }
    return [0, 0];
}

 

 

 

반응형

'CS > 알고리즘' 카테고리의 다른 글

[230327] 구명보트: Greedy 알고리즘  (0) 2023.03.27
[230326] 짝지어 제거하기: stack  (0) 2023.03.26
[230326] 다음 큰 숫자  (0) 2023.03.26
[230326] 숫자의 표현  (0) 2023.03.26
[230325] 3진법 뒤집기: parseInt, toString  (0) 2023.03.26