코딩테스트/프로그래머스

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

34suuuuu 2025. 4. 9. 09:06

✴️ 문제

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

 

✴️ 문제 풀이 

 

탈락자가 생기는 경우는 2가지가 있다.

1. 끝말을 제대로 잇지 않은 경우

2. 했던 말 또하는 경우

 

1번의 경우는 `charAt`으로 이전 단어의 마지막 글자와 현재 단어의 첫번째 글자를 비교해줬다.

그리고 2번의 경우는 단어들을 리스트에 넣어 `contains`로 확인해줬다.

탈락자의 번호는 `(i % n) + 1`, 탈락자의 차례는 `(i / n) + 1` 로 리턴해준다.

 

✴️ 전체 코드(Java)

import java.util.*;

class Solution {
    public int[] solution(int n, String[] words) {    
        Set<String> set = new HashSet<>();
        set.add(words[0]);
        
        for(int i=1 ; i < words.length; i++){
            if(set.contains(words[i]) || words[i-1].charAt(words[i-1].length()-1) != words[i].charAt(0)){
                return new int[]{(i % n) + 1,(i / n) + 1};

            }
            set.add(words[i]);
        }

        return new int[]{0,0};
    }
}