본문 바로가기
Algorithm/Programmers Java

Java 프로그래머스 영어 끝말잇기

by 제우제우 2024. 3. 1.

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

 

프로그래머스

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

programmers.co.kr

문제 분류 : 코딩테스트 연습 > Summer/Winter Coding(~2018) > 영어 끝말잇기

난이도 : 2

 

정답 코드 

import java.util.*;
class Solution {
    public int[] solution(int n, String[] words) {
        int []answer = {0, 0};
        // 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는
        HashSet<String> set = new HashSet<>(); // 단어의 중복을 확인하기 위한
        Stack<String> stack = new Stack<>();
        for(String word : words){
            word = word.toLowerCase();
            if(stack.isEmpty()){
                stack.push(word);
                set.add(word);
                continue;
            }
            if(!stack.peek().endsWith(Character.toString(word.charAt(0))) || set.contains(word)){
                 int size = stack.size() + 1;
                 if(size % n != 0){
                     answer[0] = size % n;
                 }
                 else answer[0] = n;
                 answer[1] = ( size / n ) + (size % n == 0 ? 0 : 1);
                 break;
                
            }
            stack.push(word);
            set.add(word);
        }
        return answer;
    }
}