어제의 나보다 성장한 오늘의 나

[프로그래머스][Level2][Java] 영어 끝말잇기 본문

알고리즘/프로그래머스(Programmers)

[프로그래머스][Level2][Java] 영어 끝말잇기

NineOne 2021. 1. 2. 00:46

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

 

코딩테스트 연습 - 영어 끝말잇기

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

문제풀이

  1. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.
  2. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.
  3. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.
  4. 이전에 등장했던 단어는 사용할 수 없습니다.
  5. 한 글자인 단어는 인정되지 않습니다.

차례대로 검사하면서 위 조건을 만족 못하면 break 하면 된다.

코드

import java.util.*;

class Solution {
    public int[] solution(int n, String[] words) {
        int[] answer = new int[2];
        Set<String> wordCheck = new HashSet<>();
        wordCheck.add(words[0]);
        
        for(int i=1; i<words.length; i++){
            wordCheck.add(words[i]);
            if( words[i-1].charAt(words[i-1].length()-1) != words[i].charAt(0) ||   // 단어가 이어지는지
                wordCheck.size() != i+1 ||                                        // 단어의 중복
                words[i].length() == 1){                                            // 한글자인 단어
                answer[0] = (i%n) +1;
                answer[1] = (i/n) +1;
                break;
            }
        }

        return answer;
    }
}
Comments