알고리즘/프로그래머스

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

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. 유형

구현

 

2. 아이디어

  • HashSet
  • 몫, 나머지 연산

3. 풀이

 

집중적으로 볼것은 규칙 4번 입니다.

 

- HashSet의 contains만 사용하면 됩니다.

 

- 반복문이 끝날 때, 현 문자열의 마지막 char만 저장해주면 됩니다.

4. 코드

import java.util.*;

class Solution {
    static HashSet<String> diction;
    public int[] solution(int n, String[] words) {
        int[] answer = new int[2];
        char lastChar = ' ';
        diction = new HashSet<>();
        int turn=0;
        int personNumber=0;
        int index=0;
        boolean notFound=true;
        for(int i=0; i<words.length; i++){
            //규칙3
            if(!rule3(i, lastChar, words[i])){
                index=i;
                notFound=false;
                break;
            }
            //규칙4
            if(!rule4(words[i])){
                index=i;
                notFound=false;
                
                break;
            }
            //규칙5
            if(words[i].length()==1){
                index=i;
                notFound=false;
                break;
            }
            lastChar = words[i].charAt(words[i].length()-1);
        }
        if(!notFound){
            answer[0]=(index%n)+1;
            answer[1]=(index/n)+1;
        }else{
            answer[0]=0;
            answer[1]=0;
        }
        return answer;
    }
    
    static boolean rule3(int i, char lastChar, String word){
        if(i==0 || lastChar==word.charAt(0)){
            return true;
        }else{
            return false;
        }
    }
    
    static boolean rule4(String word){
        if(diction.contains(word)){
            return false;//이미 있음
        }else{
            diction.add(word);
            return true;
        }
    }
}