본문 바로가기
코딩테스트/Java

[Programmers] 영어끝말잇기

by Coarti 2023. 7. 25.
package beginner;

import java.util.HashMap;
import java.util.Map;

public class WordChain {
	public int[] solution(int n, String[] words) {
		int[] answer = { 0, 0 };
		int i = 1;
		Map<String, Integer> map = new HashMap<>();
		map.put(words[0], 1);
		while (i < words.length) {
			if (!check(words[i - 1], words[i])) { // 이전 단어와 현재 단어를 비교
				answer[0] = i % n + 1;
				answer[1] = i / n + 1;
				return answer;
			}
			if (map.containsKey(words[i])) { // 단어 중복 시
				answer[0] = i % n + 1; // 자신의 번호
				answer[1] = i / n + 1; // 자신의 몇 번째 차례인지
				return answer;
			}

			map.put(words[i], 1);
			// map.put(words[i], map.getOrDefault(words[i], 0) + 1);
			i++;
		}
		return answer;
	}

	private boolean check(String prev, String curr) {
		char p = prev.charAt(prev.length() - 1);
		char c = curr.charAt(0);
		return p == c;
	}

	public static void main(String[] args) {
		String[] words = new String[] {

				// "tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"

				"hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang",
				"gather", "refer", "reference", "estimate", "executive"

				// "hello", "one", "even", "never", "now", "world", "draw"

		};

		WordChain test = new WordChain();
		int[] result = test.solution(5, words);
		System.out.printf("[%d,%d]\n", result[0], result[1]);

	}
}
728x90

'코딩테스트 > Java' 카테고리의 다른 글

[CodeTree]조건에 부합하는 수  (0) 2024.08.06
[Programmers] OX퀴즈  (0) 2024.04.23
[Programmers] 안전지대  (0) 2024.04.23
[Programmers] 겹치는 선분의 길이  (0) 2024.04.23
[Programmers] 평행  (0) 2024.04.23