문제 출처 - Programmers
문제는 여기
[풀이]
1. 리스트에 단어가 있는지 체크를 하고 있다면 사람과 차례를 각각 answer에 담아준다.
2. 사용되지 않은 단어라면 리스트에 해당 단어를 넣어주고 반복을 종료한다.
3. 이전 단어가 끝나는 문자와 현재 단어가 시작하는 문자가 일치하는지 체크해준다.
4. 3.의 결과가 일치하지 않는다면 사람과 차례를 각각 answer에 담아주고 반복을 종료한다.
5. 1. ~ 4. 의 과정을 주어진 단어들의 목록 개수만큼 반복한다.
6. 결과를 출력한다.
[접근]
1. 리스트에 단어들을 담으면서 이미 사용했는지 체크하면 되겠다고 생각하였다.
2. 이전 단어의 마지막과 시작 단어의 처음을 비교하면 되겠다고 생각하였다.
[코드]
import java.util.*;
class Solution {
public int[] solution(int n, String[] words) {
ArrayList<String> list = new ArrayList<>();
int[] answer = {0, 0};
for (int i = 0; i < words.length; i++) {
// 이미 나왔던 단어
if (list.contains(words[i])) {
// 사람
answer[0] = (i % n) + 1;
// 차례
answer[1] = (i / n) + 1;
break;
}
// 리스트에 넣기
list.add(words[i]);
// 끝말잇기가 잘못된 경우
if (i > 0 && words[i].charAt(0) != words[i - 1].charAt(words[i - 1].length() - 1) ) {
// 사람
answer[0] = (i % n) + 1;
// 차례
answer[1] = (i / n) + 1;
break;
}
}
return answer;
}
}
'문제 풀이 > Programmers' 카테고리의 다른 글
[프로그래머스] 피보나치 수 (JAVA) (0) | 2022.04.25 |
---|---|
[프로그래머스] 최솟값 만들기 (0) | 2022.04.24 |
[프로그래머스] 숫자의 표현 (JAVA) (0) | 2022.04.21 |
[프로그래머스] 올바른 괄호 (JAVA) (0) | 2022.04.20 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 (0) | 2022.04.18 |