https://programmers.co.kr/learn/courses/30/lessons/12981
문제 파악
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 |