(Python, Java) 프로그래머스 - 영어 끝말잇기
in Algorithm on Programmers, Level2
[문제 링크]
Python 풀이
import math
def solution(n, words):
answer = [0, 0]
words_store = set()
for idx, word in enumerate(words):
if idx == 0:
words_store.add(word)
prev = word[-1]
continue
if word in words_store or prev != word[0]:
answer[0] = (idx % n) + 1
answer[1] = math.ceil((idx + 1) / n)
break
words_store.add(word)
prev = word[-1]
return answer
Java 풀이
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
class Solution {
public int[] solution(int n, String[] words) {
int[] answer = new int[2];
Arrays.fill(answer, 0);
Set<String> usedWords = new HashSet<>();
char prev = 0;
for (int idx = 0; idx < words.length; idx++) {
if (idx == 0) {
usedWords.add(words[idx]);
prev = words[idx].charAt(words[idx].length() - 1);
continue;
}
if (usedWords.contains(words[idx]) || prev != words[idx].charAt(0)) {
answer[0] = (idx % n) + 1;
answer[1] = (int) Math.ceil((idx + 1) / (double) n);
break;
}
usedWords.add(words[idx]);
prev = words[idx].charAt(words[idx].length() - 1);
}
return answer;
}
}