https://school.programmers.co.kr/learn/courses/30/lessons/49993
๋ฌธ์
- ์ ํ ์คํฌ ์์ skill๊ณผ ์ ์ ๋ค์ด ๋ง๋ ์คํฌํธ๋ฆฌ๋ฅผ ๋ด์ ๋ฐฐ์ด skill_trees๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋
- ๊ฐ๋ฅํ ์คํฌํธ๋ฆฌ ๊ฐ์๋ฅผ return
์ ํ์ฌํญ
- ์ ํ ์คํฌ ์์ skill์ ๊ธธ์ด๋ 1 ์ด์ 26 ์ดํ
- skill_trees๋ ๊ธธ์ด 1 ์ด์ 20 ์ดํ์ธ ๋ฐฐ์ด
- skill_trees์ ์์๋ ๊ธธ์ด๊ฐ 2 ์ด์ 26 ์ดํ์ธ ๋ฌธ์์ด
์ ์ถ๋ ฅ ์์
skill | skill_trees | return |
"CBD" | {"BACDE", "CBADF", "AECB", "BDA"} | 2 |
ํ์ด
- ์คํฌํธ๋ฆฌ๊ฐ ๊ฐ๋ฅํ์ง ์ ํ ์คํฌ ์์์ ๋ง๋์ง ํ๋จํ๊ธฐ
- skill์ ์๋ ๋ฌธ์์ ์ผ์นํ๋ค๋ฉด, ๊ทธ ์คํฌ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅ
- ๋ค์์ ์ผ์นํ๋ ๋ฌธ์๊ฐ ์ ์ฅํ ์ธ๋ฑ์ค๋ณด๋ค ์์ผ๋ฉด(์ ํ ์คํฌ ์์์ ๋ง์ง ์์) => ๋ถ๊ฐ๋ฅ
- ์ ์ฅํ ์ธ๋ฑ์ค๋ณด๋ค ํฌ๋ฉด(์์์ ๋ง์) => ์คํฌ ์์ ์ฆ๊ฐ
์ฝ๋
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0; //์ ๋ต : ๊ฐ๋ฅํ ์คํฌํธ๋ฆฌ ๊ฐ์
for(int i = 0; i < skill_trees.length; i++) {
if(isPossible(skill, skill_trees[i])) { //์คํฌํธ๋ฆฌ ๊ฐ๋ฅํ์ง
answer++;
}
}
return answer;
}
public boolean isPossible(String skill, String skill_tree) {
int order = 0; //์คํฌ์ ์์ ์ ์ฅ
for(int i = 0; i < skill_tree.length(); i++) {
int idx = skill.indexOf(skill_tree.charAt(i)); //ํด๋น ์คํฌ์ ์์ ๊ฐ์ ธ์ด
if(idx == -1) continue;
if(order < idx) { //์ ํ๋์ง ์์ผ๋ฉด
return false; //๋ถ๊ฐ๋ฅ
} else { //์ ํ๋์์ผ๋ฉด
order++; //์คํฌ ์์ ์ฆ๊ฐ
}
}
return true;
}
}
๊ฒฐ๊ณผ
๋ฐฐ์ด์
- int indexOf(Object o)
- ๋ฆฌ์คํธ์ ์์ผ๋ฉด ํด๋น ์ธ๋ฑ์ค ๋ฐํ, ๋ฆฌ์คํธ์ ์์ผ๋ฉด -1 ๋ฐํ
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ (0) | 2023.08.30 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์์ดํ ์ค๊ธฐ (0) | 2023.08.21 |
ํ๋ก๊ทธ๋๋จธ์ค - n์ง์ ๊ฒ์ (0) | 2023.08.17 |
ํ๋ก๊ทธ๋๋จธ์ค - ํธํ ๋์ค (0) | 2023.08.04 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ฃผ์ ๊ฐ๊ฒฉ (0) | 2023.08.03 |