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

LeeYulhee·2023년 9월 15일
0

💻 문제 출처 : 프로그래머스_영어 끝말잇기

👉 내가 작성한 답


import java.util.*;

class Solution {
    public int[] solution(int n, String[] words) {

        char lastLetter = words[0].charAt(words[0].length() - 1);
        
        Set<String> word = new HashSet<>();
        
        for(int i = 0; i < words.length; i++) {
            int talker = i % n + 1;
            int turn = i / n + 1;
            
            if ((i != 0 && lastLetter != words[i].charAt(0)) || word.contains(words[i])) {
                return new int[]{talker, turn};
            }

            word.add(words[i]);
            
            lastLetter = words[i].charAt(words[i].length() - 1);
        }

        return new int[]{0, 0};
    }
}
  • 📌 접근 방식
    • 이전 단어의 마지막 글자와 새 단어의 첫 글자를 비교
    • Set에 불렸던 단어들을 저장하고 새로 말하는 단어가 Set에 있는 단어인지 확인
  • 📌 문제 풀이 설명
    • char 변수 lastLetter에 words의 0번째 값의 마지막 글자를 대입
    • Set word를 생성
    • for문으로 0부터 words의 길이 미만까지 1씩 증가하며 순회
      • int 변수 talker는 i에서 n을 나눈 나머지에 + 1을 한 값과 같음
      • int 변수 turn에 i / n 한 값에 + 1을 해서 몇 번째 차례인지 계
      • 만약 i가 0이 아니고 lastLetter가 words[i]의 첫 글자와 같지 않으면
        • talker와 turn로 int 배열로 만들어 return
      • 만약 Set에 words[i]가 포함되어 있다면
        • talker와 turn로 int 배열로 만들어 return
      • Set에 words[i]를 추가
      • lastLetter에 words[i]의 마지막 글자 대입
    • for문이 종료되면 끝말잇기가 정상적으로 끝난 경우라 {0, 0} return
profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글