자료구조
자료구조 | 4-4 끝말잇기 (set 활용)
sunNprize
2022. 6. 8. 21:59
package programmers.lv2;
import java.util.*;
/**
* packageName : programmers.lv2
* fileName : Main
* author : ipeac
* date : 2022-06-02
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2022-06-02 ipeac 최초 생성
*/
/*
끝말 잇기
문제 설명
입력되는 단어가 순서대로 배치될 때 끝말잇기로 끝까지 이어지는지 확인하세요.
끝말잇기는 사용했던 단어가 다시 사용되면 안됩니다.
단어의 첫 글자는 앞 단어의 마지막 글자로 시작되어야 합니다.
(단, 첫 단어의 첫 글자는 확인하지 않습니다.)
입력1: ["tank", "kick", "know", "wheel", "land", "dream"]
출력1: true
단어의 연결이 모두 이어지고, 중복되는 단어가 없었습니다.
입력2: ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"]
출력2: false
사용되었던 tank 단어가 다시 사용되었습니다.
* */
class Solution {
public boolean solution(String[] words) {
boolean answer = true;
System.out.println("words = " + Arrays.toString(words));
Set<String> set = new HashSet<>(Arrays.asList(words));
//중복단어 검증
answer = words.length == set.size();
if (!answer) {
return false;
}
//끝말잇기 연계 검증
for (int i = 1; i < words.length; i++) {
String pre = words[i - 1].substring(words[i - 1].length() - 1);
String now = words[i].substring(0, 1);
System.out.println("pre = " + pre);
System.out.println("now = " + now);
//전 단어의 끝말과 현재 단어의 첫말이 다르다면 false
if (!pre.equals(now)) {
return false;
}
}
return answer;
}
}
public class Main {
public static void main(String[] args) {
Solution solution = new Solution();
solution.solution(new String[]{"tank", "kick", "know", "wheel", "land", "dream"});
System.out.println("======================================================");
solution.solution(
new String[]{"tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"});
}
}