n - 참가자 인원
words - 끝말있기 게임 진행
규칙
1. 바로 앞에 말한 단어의 끝자랑 내가 말한 단어의 첫자가 다르면 땡
2. 앞에 이미 말한 단어가 있으면 땡
입출력 예 #1
3명의 사람이 끝말잇기에 참여하고 있습니다.
1번 사람 : tank, wheel, mother
2번 사람 : kick, land, robot
3번 사람 : know, dream, tank
와 같은 순서로 말을 하게 되며, 3번 사람이 자신의 세 번째 차례에 말한 tank라는 단어가 1번 사람이 자신의 첫 번째 차례에 말한 tank와 같으므로 3번 사람이 자신의 세 번째 차례로 말을 할 때 처음 탈락자가 나오게 됩니다.
해결해야 될 규칙
1. 내가 말한 단어가 뒤의 단어의 끝자랑 같은지
2. 내가 말한 단어가 이미 나온 단어는 아닌지
3. 땡이면 나는 몇번이고
4. 땡이면 나는 몇번째 턴에 탈락했는지
class Solution {
public int[] solution(int n, String[] words) {
ArrayList<String> str = new ArrayList<>();
int[] answer = {0,0};
str.add(words[0]);
for(int i=1; i<words.length; i++){
char a = str.get(i-1).charAt(str.get(i-1).length()-1);
//1. 내가 말한 단어가 뒤의 단어의 끝자랑 같은지
//2. 내가 말한 단어가 이미 나온 단어는 아닌지
if(a != words[i].charAt(0) || str.contains(words[i])){
//땡인 경우
//3. 3명의 경우 1 2 3 1 2 3순으로 돌게되서 %로 처리
answer[0]= ((i+1)%n == 0)? n : (i+1)%n;
//4. 1 2 3 - 1턴 4 5 6 - 2턴 7 8 9 - 3턴 명수와 나눠서 올림
answer[1] = (int)Math.ceil((i+1)*1.0/n);
// 1.0을 곱해준 이유는 정수/정수 나누면 무조건 내림되서 처리 되기때문
// 소수 / 정수 하면 소수로 출력이 된다.
return answer;
}
str.add(words[i]);
}
return answer;
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
Mysql 코딩테스트 준비 (0) | 2023.06.14 |
---|---|
Level2 - 땅따먹기 (DP) (0) | 2023.06.04 |
Level2 - 피로도 (완전탐색) (0) | 2023.05.29 |
Level2 - [1차] 뉴스 클러스터링 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.05.29 |
Level2 - 캐시 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.05.26 |
댓글