https://school.programmers.co.kr/learn/courses/30/lessons/12981
탈락하는 조건은 2가지
1. 중복된 단어를 말하거나,
2. 앞사람이 말한 단어의 마지막 문자로 시작하는 문자가 아니거나
이므로
charAt을 이용한 문자 비교 + Set을 이용한 중복 체크를 해야한다.
import java.util.*;
class Solution {
public int[] solution(int n, String[] words) {
Set<String> peek = new HashSet();
peek.add(words[0]);
int count = 0;
for (int i = 1; i < words.length; i++) {
String word = words[i];
String prev = words[i-1];
if (prev.charAt(prev.length()-1) != word.charAt(0) || !peek.add(word)) {
count = i;
break;
}
}
if (count == 0) return new int[] {0, 0};
return new int[] { count % n + 1, (int) Math.ceil(count / n) + 1};
}
}
n이 3이고 9번째 단어(i == 8)에서 틀린 경우
8을 3으로 나눈 나머지가 2이며, 이는 사람의 순서가 된다. 그런데 프로그램상 계산은 0부터 시작했으므로, +1을 더해줘야 함.
8을 3으로 나눈 몫은 2이며 이는 회차가 된다. 역시나 계산상 0부터 시작했으므로, +1을 더해줘야 함.
'코딩테스트 > programmers' 카테고리의 다른 글
전력망을 둘로 나누기 (0) | 2023.09.19 |
---|---|
삼각 달팽이 (0) | 2023.09.19 |
카펫 (0) | 2023.09.18 |
짝지어 제거하기 (0) | 2023.09.18 |
피보나치 수 (0) | 2023.09.16 |