728x90
사용한 단어 추적하기:
게임에서 이미 사용된 단어를 추적하기 위해 리스트나 Set을 사용할 수 있습니다.
각 단어가 사용될 때마다 리스트에 추가하여 중복을 체크합니다.
단어 연결 규칙 확인:
각 단어의 마지막 글자와 다음 단어의 첫 글자가 일치하는지 확인해야 합니다.
이때, 전 단어의 마지막 글자와 현재 단어의 첫 글자를 비교하여 규칙이 지켜졌는지 확인합니다.
차례와 번호 계산:
몇 번째 사람이 규칙을 어겼는지, 몇 번째 차례인지 계산해야 합니다.
이 정보를 바탕으로 [사람 번호, 차례] 형식의 배열을 반환합니다.
이를 위해 인덱스를 플레이어 수(n)로 나눈 나머지와 몫을 활용할 수 있습니다.
예외 처리:
게임이 규칙에 맞게 끝난 경우, [0, 0]을 반환합니다.
모든 단어가 규칙을 지켰는지 검사한 후 적절히 반환 값을 설정합니다.
정답은 더보기 클릭
더보기
더보기
더보기
더보기
import java.util.*;
class Solution {
public int[] solution(int n, String[] words) {
// 사용한 단어를 저장하는 리스트
ArrayList<String> usedWords = new ArrayList<>();
// 첫 단어는 규칙에 무조건 맞기 때문에 리스트에 추가
usedWords.add(words[0]);
// 두 번째 단어부터 검사
for (int i = 1; i < words.length; i++) {
String word = words[i]; // 현재 단어
// 사용했던 단어인지 확인
if (usedWords.contains(word)) {
// 현재 단어를 말한 사람의 번호와 차례를 반환
return new int[] {i % n + 1, i / n + 1};
}
String lastWord = usedWords.get(i - 1); // 이전 단어
// 이전 단어의 마지막 알파벳이 현재 단어의 첫 알파벳과 다른 경우
if (lastWord.charAt(lastWord.length() - 1) != word.charAt(0)) {
// 현재 단어를 말한 사람의 번호와 차례를 반환
return new int[] {i % n + 1, i / n + 1};
}
// 현재 단어를 사용한 단어 리스트에 추가
usedWords.add(word);
}
// 모든 단어가 규칙에 맞게 사용된 경우 [0, 0] 반환
return new int[] {0, 0};
}
}
728x90
'프로그래머스(Java) > Level 2' 카테고리의 다른 글
[프로그래머스] 괄호 회전하기 (0) | 2024.07.01 |
---|---|
[프로그래머스] N개의 최소공배수 (0) | 2024.06.29 |
[프로그래머스] 카펫 (0) | 2024.06.27 |
[프로그래머스] 올바른 괄호 (0) | 2024.06.26 |
[프로그래머스] 최댓값과 최솟값 (0) | 2024.06.26 |