반응형
문제 정보는 아래 링크를 확인해주세요!
문제 접근 방법
- 이전 단어의 끝 요소와 현재 단어의 첫 요소를 비교
- 같으면서 단어가 리스트에 없다면, 리스트에 현재 단어를 추가
- 다르거나 현재 단어가 리스트에 포함되어있다면, 분기문 종료
- 인덱스가 단어 배열의 길이와 같다면, 분기문을 정상 종료된 동시에 탈락자가 없으므로 0 배열을 반환
- 분기문이 비정상 종료되었을 시(break을 통해서),
- 인덱스를 N으로 나눈 나머지+1은 현재 탈락자의 번호를 의미하고,
- 인덱스를 N으로 나눈 몫+1은 현재 탈락자의 차례를 의미한다.
- 이 두가지를 결과 배열에 담고 반환
[소스 코드]
package algorithm.programmers;
import java.util.*;
/*
* 2018 summer/winter conding
* 영어 끝말잇기
* */
public class Pro12981 {
public static int[] solution(int n, String[] words) {
ArrayList<String> list = new ArrayList<>();
int i;//총 게임이 진행되는 횟수
list.add(words[0]);
for (i = 1; i < words.length; i++) {
char prev = words[i-1].charAt(words[i-1].length()-1);//끝 단어
char curr = words[i].charAt(0);//현재 처음 단어
if (list.contains(words[i])) break;//포함되어 있다면 종료
if (prev != curr) break;//현재 처음과 이전 끝이 다르면 종료
list.add(words[i]);//현재 단어를 중복 리스트에 담는다.
}
int[] answer = new int[2];//결과 배열 셋팅
if (i == words.length) {//탈락자가 생기지 않을 때,
answer[0] = 0;
answer[1] = 0;
} else {//탈락자가 나왔을 때,
answer[0] = i%n + 1;//총 횟수를 n명으로 나눈 나머지 +1이 현재 탈락자의 번호
answer[1] = i/n + 1;//몫+1은 몇 차례인지를 알려줌
}
return answer;
}
}
반응형
LIST
'알고리즘 > 연습문제' 카테고리의 다른 글
2018 카카오 블라인드 코딩테스트 - [1차] 뉴스 클러스터링 (feat. Java) (0) | 2020.05.13 |
---|---|
2018 카카오 블라인드 코딩테스트 - [1차] 추석 트래픽 (feat. Java) (0) | 2020.05.13 |
프로그래머스 - 점프와 순간이동(feat. Java) (0) | 2020.05.11 |
프로그래머스 - 숫자 게임(feat. Java) (0) | 2020.05.11 |
프로그래머스 - 기지국 설치 (feat. Java) (0) | 2020.05.11 |