다희의 코딩 성장일기

[프로그래머스] level2. 영어 끝말잇기 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level2. 영어 끝말잇기 (자바 JAVA)

ilmiodiario 2021. 8. 25. 15:34

[ 문제 ]  [프로그래머스] level2. 영어 끝말잇기 (자바 JAVA)

 

문제 링크 : 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


# 접근 방법 및 풀이 

 

  • 끝말잇기에서 중복단어는 HashSet을 이용해서 처리해주고, 나머지는 문제 그대로 구현하면 된다.
  • int number은 참여 순서고 1부터 시작한다. int turn은 차례고 1 첫번째 차례부터 시작한다.
  • char last는 단어 끝의 문자로, words[i]번째첫번째 문자와 비교한다.
  • char last = words[0].charAt(0)으로 첫번째 단어의 첫문자로 초기화해주고, for문을 돌면서 words[i]의 끝 글자로 갱신해준다.
  • 자세한건 코드참조

# 주의할 점 

 

  • 딱히 없음

 

JAVA 코드
import java.util.*;
class Solution {
   	public int[] solution(int n, String[] words) {
		int[] answer = new int[2];
		int number = 1;
		int turn = 1;
		HashSet<String> set = new HashSet<String>();
		char last = words[0].charAt(0);
		for (int i = 0; i < words.length; i++) {
			String s = words[i];
			if (set.contains(s) || s.charAt(0) != last) {
				answer[0] = number;
				answer[1] = turn;
				break;
			}
			last = s.charAt(s.length() - 1);
			set.add(s);
			number++;
			if (number > n) {
				number = 1;
				turn++;
			}
		}
		return answer;
	}
}

 

 

REVIEW

Comments