[프로그래머스, 12981] 영어 끝말잇기 (java)
Problem Solving/Programmers

[프로그래머스, 12981] 영어 끝말잇기 (java)

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12981

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

728x90

메모리: 74.4 MB, 시간: 0.15 ms

사용 알고리즘: 문자열

 

import java.util.*;

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

        // 나왔던 단어를 담아두는 set
        Set<String> isUsed = new HashSet<>();
        isUsed.add(words[0]);
        
        char[] word = words[0].toCharArray();
        
        // 이전 단어의 마지막 문자
        char last = word[word.length - 1];
        
        for(int i = 1; i < words.length; i++) {
            
            word = words[i].toCharArray();
            
            // 앞사람이 말한 단어의 마지막 문자로 시작하지 않은 경우나
            // 이전에 등장했던 단어를 사용한 경우
            if(last != word[0] || isUsed.contains(words[i])) {
                answer[0] = i % n + 1; // 틀린 사람
                answer[1] = i / n + 1; // 차례
                break;
            }
            else {
                last = word[word.length - 1];
                isUsed.add(words[i]);
            }
        }

        return answer;
    }
}
728x90