https://school.programmers.co.kr/learn/courses/30/lessons/12981
영어 끝말잇기 문제
영단어 맨 앞과 그 전의 영단어 끝을 비교
앞과 끝이 일치하면 HashSet을 이용하여 중복을 검사
중복되지 않은 단어인 경우에 Hash에 추가 그리고 다음 단어를 검사한다.
규칙에 어긋나면 calculate() 메서드를 실행하여 정답을 출력한다.
import java.util.Arrays;
import java.util.HashSet;
class Solution {
public int[] solution(int n, String[] words) {
int[] answer = new int[2];
int p = 1; // 사람 번호
int[] nl = new int[n+1]; // nl[p]가 몇 번째 차례인지 기록
HashSet<String> hash = new HashSet<>();
hash.add(words[0]);
for (int i=1; i<words.length; i++) {
if (p == n+1) p = 1;
nl[p]++;
if (words[i].charAt(0) == words[i-1].charAt(words[i-1].length()-1)) {
if (hash.contains(words[i])) {
calculate(p, n, nl, answer);
break;
} else hash.add(words[i]);
} else {
calculate(p, n, nl, answer);
break;
}
p++;
}
return answer;
}
private void calculate(int p, int n, int[] nl, int[] answer) {
p++;
if (p == n+1) p = 1;
answer[0] = p;
answer[1] = nl[p]+1;
}
}
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 뉴스 클러스터링 (1) | 2023.03.14 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 예상 대진표 (0) | 2023.03.12 |
[프로그래머스][JAVA]Lv. 2 - 점프와 순간 이동 (0) | 2023.02.26 |
[프로그래머스][JAVA]Lv. 2 - 배달 (0) | 2023.02.19 |
[프로그래머스][JAVA]Lv. 2 - 택배상자 문제 (0) | 2022.11.02 |