https://school.programmers.co.kr/learn/courses/30/lessons/49993
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.Arrays;
import java.util.HashSet;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
String[] order = skill.split("");
HashSet<String> hashSet = new HashSet<>(Arrays.asList(order));
for (int i = 0; i < skill_trees.length; i++) {
String[] skill_list = skill_trees[i].split("");
StringBuilder sb = new StringBuilder();
for (int j = 0; j < skill_list.length; j++) {
if (hashSet.contains(skill_list[j])) {
sb.append(skill_list[j]);
}
}
if (sb.toString().equals("")) skill_trees[i] = skill;
else skill_trees[i] = sb.toString();
}
for (int i = 0; i < skill_trees.length; i++) {
boolean flag = false;
int index = 0;
String[] skill_list = skill_trees[i].split("");
for (int j = 0; j < skill_list.length; j++) {
if (skill_list[j].equals(order[index])) {
index++;
flag = true;
} else {
flag = false;
break;
}
}
if (flag) {
answer++;
}
}
return answer;
}
}
일단 skill을 한 단어씩 떼어내고 HashSet에 저장하고 skill_trees 배열의 각 원소의 단어를 한 단어씩 HashSet에 있는지를 확인하고 StringBuilder에 추가를 하였다.
만약 skill_trees 원소에 HashSet에 있는 게 없다면 조건에 맞다고 생각하고 해당 skill_trees의 원소를 skill로 대체하였다.
아니라면 skill_trees 원소를 StringBuilder로 대체하였다.
그리고 다시 skill의 순서와 skill_trees의 순서를 가지고 만약 순서가 틀리면 false로 하여서 true인 경우로 끝난 경우에 answer를 증가시켜 답을 만들었다.
뭔가 조잡해 보인다...
더 잘해보자
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 문자열 압축 (0) | 2023.07.30 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 방문 길이 (0) | 2023.07.17 |
[프로그래머스][JAVA]Lv. 2 - 타겟 넘버 (0) | 2023.07.09 |
[프로그래머스][JAVA]Lv. 2 - 오픈채팅방 (0) | 2023.07.02 |
[프로그래머스][JAVA]Lv. 2 - 구명보트 (0) | 2023.06.18 |