본문 바로가기

PS

[Programmers] LV2 - 영어 끝말잇기

https://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번부터 N번까지 순서대로 영어로 끝말잇기를 한다.

 

탈락하는 조건은 2가지이다.

1. 이전에 나왔던 단어를 말하면 탈락

2. 앞사람이 말했던 단어의 끝 단어와 자신이 말하는 첫 단어가 일치하지 않으면 탈락

 

그리고 위 조건으로 탈락하는 사람이 없는 경우 [0,0]을 반환하면 된다.

 

더보기
import java.util.*;
class Solution {
    public int[] solution(int n, String[] words) {
        int[] answer = new int[2];

        HashSet<String> hs = new HashSet<>();
        
        int loop = words.length;
        
        int member = 1;
        int cycle  = 1;
        
        String prevKey = "";
        String key = "";
        
        boolean init = true;
        
        for(int idx = 0; idx<loop;idx++)
        {
            key = words[idx];
            
            if(idx>0)
            {
                prevKey = words[idx-1];
                
                char pk = prevKey.charAt(prevKey.length()-1); // 이전 단어 끝자리
                char k  = key.charAt(0);                      // 현재 단어 앞자리
                
                // 다를 경우 잘못 말한거니 탈락
                if(pk!=k)
                {
                    init = false;
                    break;
                }
            }
            // 이전에 말한 단어면 탈락
            if(hs.contains(key)){
                init = false;
                break;
            }
            else{
                hs.add(key);
            }
            
            member = member == n ? 1 : member+1;
            cycle++;
        }
        
        //탈락자가 발생하지 않으면
        if(init){
            answer[0] = 0;
            answer[1] = 0;
        }
        //탈락자 발생인 경우
        else{
            answer[0] = member;
            answer[1] = cycle % n == 0 ? cycle/n : cycle/n+1;
        }
        return answer;
    }
}

 

'PS' 카테고리의 다른 글

[Programmers] LV1 - 크레인 인형뽑기 게임  (0) 2021.07.02
[Programmers] LV2 - 짝지어 제거하기  (0) 2021.06.30
[BOJ] 1141번 : 접두사  (0) 2021.06.28
[Programmers]LV3 - 길 찾기 게임  (0) 2021.06.27
[Programmers] LV2 - 캐시  (0) 2021.06.27