Problem : 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
Approach
Summer/Winter Coding(~2018) 문제이다.
중복된 단어인지를 확인하기 위해 HashSet을 사용했고,
현재 단어의 첫문자가 이전 단어의 끝문자가 다른지를 체크하였다.
몇 번째 사람이 틀렸는지는 (현재 단어의 순서 % 전체 사람 수) + 1이며,
몇 번째 차례때 틀렸는지는 (현재 단어의 순서 / 전체 사람 수) + 1로 구할 수 있다.
Code
import java.util.HashSet;
public class EnglishShiritori {
public static void main(String[] args) {
EnglishShiritori es = new EnglishShiritori();
int n = 2;
// String[] words = {"tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"};
// String[] words = {"hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"};
String[] words = {"hello", "one", "even", "never", "now", "world", "draw"};
int[] t = es.solution(n, words);
System.out.println(t[0] + " " + t[1]);
}
public int[] solution(int n, String[] words) {
var set = new HashSet<String>();
set.add(words[0]);
for (int i = 1; i < words.length; i++) {
if (words[i - 1].charAt(words[i - 1].length() - 1) != words[i].charAt(0)) {
return new int[]{(i % n) + 1, i / n + 1};
}
if (!set.add(words[i])) {
return new int[]{(i % n) + 1, i / n + 1};
}
}
return new int[]{0, 0};
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[java] 프로그래머스 (뉴스 클러스터링) Level 2 (0) | 2021.01.18 |
---|---|
[java] 프로그래머스 (예상 대진표) Level 2 (0) | 2021.01.17 |
[java] 프로그래머스 (점프와 순간 이동) Level 2 (0) | 2021.01.17 |
[java] 프로그래머스 (소수 만들기) Level 2 (0) | 2021.01.16 |
[java] 프로그래머스 (수식 최대화) Level 2 (0) | 2021.01.16 |