https://programmers.co.kr/learn/courses/30/lessons/12981
[풀이]
주어진 조건에 맞게 구현하면 되는 문제였다. 아래 조건에 따라 차례대로 구현을 하면 되며 신경 쓸 부분은 차례에 해당하는 숫자를 반환하는 정도였다고 생각한다.
조건
1. 이전 단어와 새로운 단어가 이어지지 않으면 종료
2. 새로운 단어가 이전에 나온 단어면 종료
3. 1,2번 조건에 위배되지 않을 경우 [0,0] 반환
prev -> 마지막에 담긴 단어
turn -> 차례
arr -> 이전 단어들을 기록해두는 용도
[코드]
import java.util.*;
public class Solution {
public int[] solution(int n, String[] words) {
List<String> arr = new ArrayList<>();
int[] answer = {};
int turn = 1;
String prev = "";
for (int i = 0; i < words.length; i++) {
if (i != 0 && words[i].charAt(0) != prev.charAt(prev.length() - 1)) {
answer = new int[]{i % n + 1, turn};
break;
}
if (arr.contains(words[i])) {
answer = new int[]{i % n + 1, turn};
break;
}
if ((i + 1) % n == 0) {
turn++;
}
if (i == words.length - 1) {
answer = new int[]{0, 0};
break;
}
arr.add(words[i]);
prev = words[i];
}
return answer;
}
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 비밀지도(Java) (0) | 2021.07.09 |
---|---|
프로그래머스 : 다트 게임(Java) (0) | 2021.07.09 |
프로그래머스 : 게임 맵 최단거리(Java) (0) | 2021.07.08 |
프로그래머스 : 짝지어 제거하기(Java) (0) | 2021.07.07 |
프로그래머스 : 예상 대진표(Java) (0) | 2021.07.07 |