하루에 한 문제

[프로그래머스-lv2 Summer/Winter Coding(~2018)]영어 끝말잇기 -Java 본문

알고리즘/프로그래머스 lv2 다시풀기

[프로그래머스-lv2 Summer/Winter Coding(~2018)]영어 끝말잇기 -Java

dkwjdi 2021. 3. 17. 00:29

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

 

코딩테스트 연습 - 영어 끝말잇기

3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0]

programmers.co.kr

import java.util.Arrays;
import java.util.HashSet;

class Solution {
	    public int[] solution(int n, String[] words) {
	        int[] answer = {0,0};
	        
	        int no=1;
	        int turn=1;
	        HashSet<String> check = new HashSet<>();
	        char lastChar=words[0].charAt(0);
	        
	        for(int i=0; i<words.length; i++) {
	        	String word=words[i];
	        	if(lastChar!=word.charAt(0) || check.contains(word)) {
	        		answer[0]=no;
	        		answer[1]=turn;
	        		break;
	        	}
	        	lastChar=word.charAt(word.length()-1);
	        	check.add(word);
	        	
	        	if(no++==n) {
	        		no=1;
	        		turn++;
	        	}
	        }
	        return answer;
	    }
	}

소요시간 : 11분

 

로직은 간단합니다.

 

우선 단어의 중복을 확인하기 위해 HashSet을 사용했습니다.

 

그리고 lastChar에 각 단어의 마지막 단어를 저장하고

 

새로운 단어가 왔을 때 lastChar와 현재 단어의 0번째를 비교합니다.

 

딱히 설명할 게 없는 문제라고 생각합니다.

 

끝~

Comments