[programmers] 외계어 사전 - Java
프로그래머스-962 문제는 주어진 알파벳 배열 'spell'을 사용하여 외계어 사전 'dic'에 존재하는 단어를 만들 수 있는지를 확인하는 문제입니다. 'spell'의 모든 원소를 한 번씩만 사용하여 'dic'에 존재하는 단어를 만들 수 있다면 1, 그렇지 않다면 2를 반환합니다. 이 문제를 풀면서 .contains() 메소드와 .remove() 메소드의 활용법을 익힐 수 있습니다.
Jan 31, 2024
문제 설명
PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열
spell
과 외계어 사전 dic
이 매개변수로 주어집니다. spell
에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic
에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.제한사항
spell
과dic
의 원소는 알파벳 소문자로만 이루어져있습니다.
- 2 ≤
spell
의 크기 ≤ 10
spell
의 원소의 길이는 1입니다.
- 1 ≤
dic
의 크기 ≤ 10
- 1 ≤
dic
의 원소의 길이 ≤ 10
spell
의 원소를 모두 사용해 단어를 만들어야 합니다.
spell
의 원소를 모두 사용해 만들 수 있는 단어는dic
에 두 개 이상 존재하지 않습니다.
dic
과spell
모두 중복된 원소를 갖지 않습니다.
입출력 예
spell | dic | result |
["p", "o", "s"] | ["sod", "eocd", "qixm", "adio", "soo"] | 2 |
["z", "d", "x"] | ["def", "dww", "dzx", "loveaw"] | 1 |
["s", "o", "m", "d"] | ["moos", "dzx", "smm", "sunmmo", "som"] | 2 |
입출력 예 설명
입출력 예 #1
- "p", "o", "s" 를 조합해 만들 수 있는 단어가
dic
에 존재하지 않습니다. 따라서 2를 return합니다.
입출력 예 #2
- "z", "d", "x" 를 조합해 만들 수 있는 단어 "dzx"가
dic
에 존재합니다. 따라서 1을 return합니다.
입출력 예 #3
- "s", "o", "m", "d" 를 조합해 만들 수 있는 단어가
dic
에 존재하지 않습니다. 따라서 2을 return합니다.
유의사항
- 입출력 예 #3 에서 "moos", "smm", "som"도 "s", "o", "m", "d" 를 조합해 만들 수 있지만
spell
의 원소를 모두 사용해야 하기 때문에 정답이 아닙니다.
solution.java
import java.util.*; class Solution { public int solution(String[] spell, String[] dic) { List<String> list = new ArrayList<>(Arrays.asList(spell)); // spell을 담은 list 생성 for (int i = 0; i < dic.length; i++) { String word = dic[i]; // dic의 원소 하나씩 꺼내옴 List<String> remainingLetters = new ArrayList<>(list); // spell을 담은 list 복제 for (int j = 0; j < word.length(); j++) { String letter = String.valueOf(word.charAt(j)); // dic의 원소의 문자 하나씩 대입 if (remainingLetters.contains(letter)) { // dic의 원소의 문자가 spell과 일치한다면 remainingLetters.remove(letter); // 해당 문자를 리스트에서 제거 } } if (remainingLetters.isEmpty()) { // 리스트가 모두 비었다면 return 1; // spell의 모든 원소를 사용한 단어가 있다. } } return 2; } }
핵심 키워드
- .contains() 메소드를 통해 List에 특정 값이 포함되어 있는지 확인할 수 있다.
- .remove() 메소드를 통해 ArrayList에서 특정 값을 삭제할 수 있다.
결론!
해당 문제를 풀면서 .contains() 메소드, .remove() 메소드의 활용법을 익힐 수 있었다.
Share article