https://programmers.co.kr/learn/courses/30/lessons/49993
์ฝ๋
class Solution {
public static int solution(String skill, String[] skill_trees) {
int answer = 0;
for(int i=0; i<skill_trees.length; i++){
int index = 0;
boolean check = true;
String[] skills = skill_trees[i].split("");
for(String s : skills){
// skill์ ๊ด๋ จ์๋ ๋ฌธ์๋ ๊ฑด๋๋ฐ๊ธฐ
if(skill.indexOf(s) == -1) continue;
// ์คํฌ ๋ชฉ๋ก๊ณผ ํ์ฌ ๋ฐฐ์์ผ ํ๋ ์คํฌ์ ์์๋ฅผ ๋น๊ตํ๋ค.
if(index == skill.indexOf(s)) index ++;
/*
* ๋ฐฐ์์ผํ๋ ์คํฌ์ ์์๋ณด๋ค ํ์ฌ ์คํฌ์ด ๋ ์์๋๊ฐ๋.
* e.g) skill = "CBD" , skills = "BACDE" -> C๋ฅผ๋ฐฐ์ฐ๊ณ B๋ฅผ ๋ฐฐ์์ผํจ
*/
else if(index < skill.indexOf(s)){
check = false;
break;
}
}
if(check) answer ++;
}
return answer;
}
}
ํ์ด
์ด๋ป๊ฒ ์ ๊ทผํ์ง ์๊ฐํ๋ค๊ฐ ๋์ ํ ๋ ์ค๋ฅด์ง ์์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
๋๋ ๊ณ์ ๋ฌธ์ ๋ฅผ ์๋ชป ์ดํดํ๊ณ , ์๋ชป ์๊ฐํ๋ค.
๋ฐฐ์์ผํ๋ ์คํฌ ์์๊ฐ "CBD"์ผ๋, CBD, CB, BD, CD ๋ฑ์ ๊ฒฝ์ฐ๊ฐ ๊ฐ๋ฅํ ์ค ์์๋ค.
ํ์ง๋ง B๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด C๋ฅผ ๋ฐฐ์์ผํ๊ณ , D๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด CB๋ฅผ ๋ฐฐ์์ผํ๋ฏ๋ก ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๋ CBD, CB, C ๋ฟ์ด๋ค.
์ ํ์ด๋ ์ฃผ์ด์ง skill_trees ๋ฐฐ์ด์ ๊ฐ ์์๋ณ๋ก ๋ฐฐ์์ผํ๋ ์คํฌ๊ณผ ์์๋ฅผ ๋น๊ตํ๋ฉด์ ํธ๋ ๋ฐฉ์์ด๋ค.
String.indexOf(String str) ๋ฉ์๋์ ๊ฒฝ์ฐ, ํด๋น ๋ฌธ์์ด์์ ๋งค๊ฐ๋ณ์์ ๋ฌธ์๊ฐ ๋ช๋ฒ์งธ ์ธ๋ฑ์ค์ธ์ง ์ฐพ๋ ๋ฉ์๋์ด๋ค.
๋ง์ฝ ์ฐพ๊ณ ์ ํ๋ ๋ฌธ์๊ฐ ์์๊ฒฝ์ฐ -1์ ๋ฐํํ๋ค.
skill_trees์ ๊ฐ ์์๋ฅผ split์ ๊ธฐ์ค์ผ๋ก ์๋ผ์ ๋ฌธ์๋ณ๋ก ๋น๊ตํ๋ค.
e.g) "BACDE" = > 'B', 'A', 'C', 'D', 'E'
String[] skills = skill_trees[i].split("");
๊ทธ ํ ์๋ฅธ ๋ฌธ์์ด์ ๋ชจ๋ ํ์ํ๋ฉด์ ๋ฐฐ์์ผํ๋ ์คํฌ๊ณผ ๋น๊ตํ๋ค.
1) ํ์ฌ ๋ฌธ์๊ฐ ๋ฐฐ์์ผํ๋ ์คํฌ๊ณผ ๊ด๋ จ์ด ์๋๊ฒฝ์ฐ(indexOf๊ฐ -1์ ๋ฆฌํดํ๋๊ฒฝ์ฐ) -> ๊ฑด๋๋๋ค.
2) ์คํฌ์ ๋ฐฐ์ฐ๊ธฐ ์ํด์ ๋ฐ๋์ ์ฒซ๋ฒ์งธ(C, ์ธ๋ฑ์ค = 0) ์คํฌ์ ๋ฐฐ์์ผ ํ๋ค.
๋ฐ๋ผ์ ํด๋น ์คํฌ์ ๋ฐฐ์ ์๊ฒฝ์ฐ, index๊ฐ์ ์ฆ๊ฐ์์ผ ๋ค์ ๋ฐฐ์์ผํ๋ ์คํฌ๊ณผ ๋น๊ตํ๋ค.
3) ํ์ฌ ๋ฐฐ์์ผํ๋ ์คํฌ๋ณด๋ค ํ์ฌ ์คํฌ์ด ๋ ์์ค๋.
e.g) ํ์ฌ C(์ธ๋ฑ์ค = 0)์คํฌ์ ๋ฐฐ์์ผํ๋๋ฐ, ํ์ฌ ์คํฌ์ด B(์ธ๋ฑ์ค = 1) ๋๋ D(์ธ๋ฑ์ค = 2)์ผ๋,
๋ถ๊ฐ๋ฅํ ์คํฌํธ๋ฆฌ ์ด๋ฏ๋ก ๋ค๋ ๋ ํ์ํ ํ์๋ ์์ด ๋ถ๊ฐ๋ฅํ ์คํฌ์ด๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 3085๋ฒ: ์ฌํ ๊ฒ์(์์ ํ์) (2) | 2020.03.19 |
---|---|
[๋ฐฑ์ค] 1417๋ฒ: ๊ตญํ์์ ์ ๊ฑฐ(์์ ํ์) (0) | 2020.03.19 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์์ ๋ง๋ค๊ธฐ (0) | 2020.03.18 |
[Codeforces] 1257A: Two Rival Students (0) | 2020.03.18 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์์ด ๋๋ง์๊ธฐ (0) | 2020.03.18 |
๋๊ธ