[프로그래머스] Lv.2 영어 끝말잇기.java

hgghfgf·2023년 5월 12일
0

프로그래머스

목록 보기
62/227

영어 끝말잇기.java

import java.util.*;

class Solution {
    public int[] solution(int n, String[] words) {
        int[] answer = {0, 0};

        Set<String> set = new HashSet<>(); // 중복된 단어 체크를 위한 Set

        for (int i = 0; i < words.length; i++) {
            String word = words[i];
            char lastChar = (i == 0) ? word.charAt(0) : words[i - 1].charAt(words[i - 1].length() - 1);
            // 이전 단어의 마지막 글자

            if (set.contains(word) || word.charAt(0) != lastChar) { // 단어가 중복이거나 철자가 이어지지 않는 경우
                answer[0] = (i % n) + 1; // 번호
                answer[1] = (i / n) + 1; // 차례
                break;
            }

            set.add(word); // 사용한 단어 Set에 추가
        }

        return answer;
    }
}

Set을 생성합니다. 이 Set은 이미 사용된 단어를 체크하기 위한 용도로 사용됩니다.
단어 배열을 순회하면서 단어를 하나씩 가져옵니다.
현재 단어와 이전 단어의 마지막 글자를 비교합니다. 이전 단어가 없는 경우(즉, 현재 단어가 첫 번째 단어인 경우)는 현재 단어의 첫 글자를 마지막 글자로 간주합니다.
만약 Set에 현재 단어가 이미 존재하거나, 현재 단어의 첫 글자가 이전 단어의 마지막 글자와 다른 경우, 탈락한 참가자의 번호와 차례를 저장합니다. 이때 번호와 차례는 각각 (i % n) + 1, (i / n) + 1 로 계산됩니다.
Set에 현재 단어를 추가합니다.
모든 단어를 순회한 후, 탈락한 참가자의 번호와 차례를 저장한 배열을 반환합니다.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

0개의 댓글