외계어 사전
날짜 | 2023-10-05 |
사용 언어 | Java |
문제 유형 | IF문, 문자열, 반복문, 배열, 정렬 |
정답률 | 76% |
문제 URL | https://school.programmers.co.kr/learn/courses/30/lessons/120869 |
문제 #
문제 설명 #
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
모두 중복된 원소를 갖지 않습니다.
나의 풀이 #
import java.util.*;
class Solution {
public int solution(String[] spell, String[] dic) {
List<String> dic_list = new ArrayList<>();
// 배열 spell의 길이와 dic의 원소의 길이가 같은 값만 list에 추가
for(String word : dic) {
if(spell.length == word.length()) dic_list.add(word);
else continue;
//spell의 원소 중 하나라도 없을 경우 list에서 제거
for(String s : spell) {
if(!word.contains(s)) dic_list.remove(word);
}
}
// 조건에 충족하는 단어가 있을 경우 1, 아닐 경우 2
return dic_list.size() != 0 ? 1 : 2;
}
}
다른 사람의 풀이 #
// 문자를 확인 하는 과정에서 contains대신 remove를 활용하였다.
class Solution {
public int solution(String[] spell, String[] dic) {
int answer = 2;
for (int i = 0; i<dic.length; i++) {
if (dic[i].length() == spell.length) {
String str = dic[i];
for (int j = 0; j<spell.length; j++) {
str = str.replaceFirst(spell[j], "");
System.out.println(str);
if (j == spell.length-1 && str.length() == 0){
answer = 1;
}
}
}
}
return answer;
}
}
***
//정렬을 이용하여 spell과 dic의 원소를 비교하였다.
import java.util.Arrays;
class Solution {
public int solution(String[] spell, String[] dic) {
int answer = 0;
String sortStr = "";
Arrays.sort(spell);
for(String s : spell) {
sortStr += s;
}
for(int i = 0; i < dic.length; i++) {
char[] tmpChar = dic[i].toCharArray();
Arrays.sort(tmpChar);
if(sortStr.equals(new String(tmpChar))) {
return 1;
}
}
return 2;
}
}