유블로그

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

알고리즘

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

yujeong kang 2021. 1. 24. 23:02

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

 

소요시간 : 7분

 

차례가 다시 1로 돌아올 때마다 round를 1씩 올린다.

매 차례마다 단어 첫 음절이 앞 단어의 마지막 음절과 동일한 지 체크해야하고

앞에 이미 나왔는 지 체크한다.

위 두 조건 중 하나라도 맞게 되면 그 때의 round와 차례를 answer 배열에 넣고 반환한다.

import java.util.HashSet;
import java.util.Set;

class Solution {
    public int[] solution(int n, String[] words) {
        int[] answer = {0, 0};
        
        Set<String> set = new HashSet<>();
        int round = 1, order = 1;
        for (int i = 0; i < words.length; i++) {
			if(set.contains(words[i])) {
				answer[0] = order;
				answer[1] = round;
				break;
			}
			if(i > 0 && words[i-1].charAt(words[i-1].length()-1) != words[i].charAt(0)) {
				answer[0] = order;
				answer[1] = round;
				break;
			}
			set.add(words[i]);
			order++;
			if(order > n) {
				order = 1;
				round++;
			}
		}
        
        return answer;
    }
}