



문자열 처리 : 각 단어의 마지막 문자와 다음 단어의 첫 문자 비교
중복 단어 검사 : 이전에 말한 단어를 저장하고, 새 단어가 이미 사용된 단어인지 확인
참가자와 차례 계산 : 탈락자의 번호와 차례계산
문자열 비교 : substring() 메소드를 사용해 각 단어의 마지막 문자와 다음 단어의 첫 문자를 추출하는게 핵심
중복검사 : HashSet을 사용해서 이전에 사용된 단어를 저장하고, 새 단어가 이미 존재하는지 체크
탈락자 계산 : i % n 과 i / n 을 사용해서 각각 참가자 번호와 차례를 구한다
package Programmers;
import java.util.*;
public class ProgrammingBasic {
public static void main(String[] args) {
int n = 3;
String[] words = {"tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"};
System.out.println(Arrays.toString(solution(n, words)));
}
public static int[] solution(int n, String[] words) {
HashSet<String> set = new HashSet<>();
int lastPerson = 0;
int turn = 0;
String prevWord = "";
for (int i = 0; i < words.length; i++) {
String currentWord = words[i];
if (i > 0) {
String last = prevWord.substring(prevWord.length() - 1);
String first = currentWord.substring(0, 1);
if (!last.equals(first) || set.contains(currentWord)) {
lastPerson = (i % n) + 1;
turn = (i / n) + 1;
break;
}
}
set.add(currentWord);
prevWord = currentWord;
}
if (lastPerson == 0) {
return new int[]{0, 0};
}
return new int[]{lastPerson, turn};
}
}




문자열 처리 : 각 단어의 마지막 문자와 다음 단어의 첫 문자 비교
중복 단어 검사 : 이전에 말한 단어를 저장하고, 새 단어가 이미 사용된 단어인지 확인
참가자와 차례 계산 : 탈락자의 번호와 차례계산
문자열 비교 : substring() 메소드를 사용해 각 단어의 마지막 문자와 다음 단어의 첫 문자를 추출하는게 핵심
중복검사 : HashSet을 사용해서 이전에 사용된 단어를 저장하고, 새 단어가 이미 존재하는지 체크
탈락자 계산 : i % n 과 i / n 을 사용해서 각각 참가자 번호와 차례를 구한다
package Programmers; import java.util.*; public class ProgrammingBasic { public static void main(String[] args) { int n = 3; String[] words = {"tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"}; System.out.println(Arrays.toString(solution(n, words))); } public static int[] solution(int n, String[] words) { HashSet<String> set = new HashSet<>(); int lastPerson = 0; int turn = 0; String prevWord = ""; for (int i = 0; i < words.length; i++) { String currentWord = words[i]; if (i > 0) { String last = prevWord.substring(prevWord.length() - 1); String first = currentWord.substring(0, 1); if (!last.equals(first) || set.contains(currentWord)) { lastPerson = (i % n) + 1; turn = (i / n) + 1; break; } } set.add(currentWord); prevWord = currentWord; } if (lastPerson == 0) { return new int[]{0, 0}; } return new int[]{lastPerson, turn}; } }