하루에 한 문제

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

알고리즘/프로그래머스

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

dkwjdi 2020. 12. 17. 17:20

 

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.HashSet;
import java.util.Set;
class Solution {
		public int[] solution(int n, String[] words) {
			int[] answer = new int[2];

			Set<String> set = new HashSet<>();
			char pre=words[0].charAt(0);
			int no=-1;
			int cnt=1;

	  loop: for (int i = 0; i < words.length;) {
				for (int j = 0; j < n; j++) {
					String cur=words[i];
					
					if (set.contains(cur) || cur.charAt(0)!=pre) { // 틀림
						no=j+1;
						break loop;
					}
					set.add(cur);
					pre=cur.charAt(cur.length()-1);
					i++;
				}
				cnt++;
			}
			
			answer[0]= no<0? 0 : no;
			answer[1]= no<0? 0 : cnt;
			return answer;
		}
	}

소요시간 : 17분 

 

끝말잇기의 중복을 체크하기 위해 Set을 사용했습니다.

 

pre라는 변수에 이전 문자의 끝문자를 저장해서 지금 문자의 가장 앞부분과 비교하여 끝말이 이어지는지 확인했습니다

Comments