728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
스킬을 배워야하는 순서가 C => B => D 라면,
C만 배우기 | 가능 | C => B | 가능 | C => B => D | 가능 |
B만 배우기 | 불가능 | D만 배우기 | 불가능 | B => D | 불가능 |
당연히 D를 먼저 배우고 C를 배우는 경우도 불가능하다.
대신 skill에 없는 다른 스킬들은 언제든 배울 수 있음.
그럼 가능한 경우를 숫자로 바꿔 HashMap을 사용해 map2에 넣어두고,
skill_trees 배열에 있는 스킬트리들이 가능한지 체크해준 다음
map2에 있으면 배울 수 있는 스킬트리이기 때문에 ans++해줬다.
전체코드
import java.io.*;
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
HashMap<String, Integer> map = new HashMap<>();
HashMap<String, Integer> map2 = new HashMap<>();
int answer = 0;
String check = "";
String tmp = "";
for(int i=0; i<skill.length(); i++){
map.put(skill.charAt(i)+"", i+1);
tmp += (i+1);
map2.put(tmp, 1);
}
char skilltrees[] = skill.toCharArray();
for(int i=0; i<skill_trees.length; i++){
check = "";
for(int j=0; j<skill_trees[i].length(); j++){
if(map.containsKey(skill_trees[i].charAt(j)+"")){
check += (map.get(skill_trees[i].charAt(j)+""));
}else{
continue;
}
}
if(check.length() == 0){
answer++;
}else{
if(map2.containsKey(check)){
answer++;
}else{
continue;
}
}
}
return answer;
}
}
728x90
'코테 > Algorithm' 카테고리의 다른 글
[Programmers] [1차] 뉴스 클러스터링 (JAVA) (0) | 2024.07.08 |
---|---|
[Programmers] 가장 큰 수 (JAVA) (0) | 2024.07.04 |
[Programmers] 주식 가격 (JAVA) (0) | 2024.07.03 |
[Programmers] [3차] 압축 (JAVA) (0) | 2024.06.25 |
[BOJ] 21921: 블로그 (JAVA) (0) | 2024.06.24 |