[プログラマー-レベル2]スキルツリー[Java]
7563 ワード
提问(链接)
に答える
最初はHashMapを利用してインデックスの違いの問題を解決しようとしましたが、コードが複雑で乱雑になり、すぐに異なるルールが見つかりました.
まずプレイヤーが作成したスキルツリー(skill trees)で、スキルに含まれていない文字をすべて除外し、残りの文字列がskill文字列に含まれているかどうかを確認します.△これさえやれば結果が出ると思っていたのに…ㅠ
skill文字列は「CBD」であるが、「BD」が発生する場合もある.この言葉の意味は、Bの前にCがあるべきで、前述したように、実現したらフィルタリングできないということです.そこで見つけたのはStringのindexOf()関数です.indexOf()関数は、検索する文字列がいくつかの場所にあることを返します.0が正しい結果になるのは0だけです.
ソース import java.util.*;
class Solution {
public int count;
public ArrayList<Character> skills = new ArrayList<Character>();
public int solution(String skill, String[] skill_trees) {
// 1. skill 문자를 제외한 나머지 삭제
// 2. skill 문자열과 같은지 확인
// 선행 스킬
for(int i=0; i<skill.length(); i++) {
skills.add(skill.charAt(i));
}
StringBuilder sb = new StringBuilder();
// 스킬트리 하나씩 확인
for(int i=0; i<skill_trees.length; i++) {
String str = skill_trees[i];
// 하나하나 skills에 포함되어 있는지
for(int j=0; j<str.length(); j++) {
char c = str.charAt(j);
if(skills.contains(c)) {
sb.append(c);
}
}
// indexOf는 문자열(skill)에 해당 문자열이 포함되어 있으면 위치를 반환
if(skill.indexOf(sb.toString()) == 0) {
count += 1;
}
sb.delete(0, sb.length());
}
return count;
}
}
結果
Reference
この問題について([プログラマー-レベル2]スキルツリー[Java]), 我々は、より多くの情報をここで見つけました
https://velog.io/@minuk1236/프로그래머스-Level-2-스킬트리-Java
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
最初はHashMapを利用してインデックスの違いの問題を解決しようとしましたが、コードが複雑で乱雑になり、すぐに異なるルールが見つかりました.
まずプレイヤーが作成したスキルツリー(skill trees)で、スキルに含まれていない文字をすべて除外し、残りの文字列がskill文字列に含まれているかどうかを確認します.△これさえやれば結果が出ると思っていたのに…ㅠ
skill文字列は「CBD」であるが、「BD」が発生する場合もある.この言葉の意味は、Bの前にCがあるべきで、前述したように、実現したらフィルタリングできないということです.そこで見つけたのはStringのindexOf()関数です.indexOf()関数は、検索する文字列がいくつかの場所にあることを返します.0が正しい結果になるのは0だけです.
ソース import java.util.*;
class Solution {
public int count;
public ArrayList<Character> skills = new ArrayList<Character>();
public int solution(String skill, String[] skill_trees) {
// 1. skill 문자를 제외한 나머지 삭제
// 2. skill 문자열과 같은지 확인
// 선행 스킬
for(int i=0; i<skill.length(); i++) {
skills.add(skill.charAt(i));
}
StringBuilder sb = new StringBuilder();
// 스킬트리 하나씩 확인
for(int i=0; i<skill_trees.length; i++) {
String str = skill_trees[i];
// 하나하나 skills에 포함되어 있는지
for(int j=0; j<str.length(); j++) {
char c = str.charAt(j);
if(skills.contains(c)) {
sb.append(c);
}
}
// indexOf는 문자열(skill)에 해당 문자열이 포함되어 있으면 위치를 반환
if(skill.indexOf(sb.toString()) == 0) {
count += 1;
}
sb.delete(0, sb.length());
}
return count;
}
}
結果
Reference
この問題について([プログラマー-レベル2]スキルツリー[Java]), 我々は、より多くの情報をここで見つけました
https://velog.io/@minuk1236/프로그래머스-Level-2-스킬트리-Java
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import java.util.*;
class Solution {
public int count;
public ArrayList<Character> skills = new ArrayList<Character>();
public int solution(String skill, String[] skill_trees) {
// 1. skill 문자를 제외한 나머지 삭제
// 2. skill 문자열과 같은지 확인
// 선행 스킬
for(int i=0; i<skill.length(); i++) {
skills.add(skill.charAt(i));
}
StringBuilder sb = new StringBuilder();
// 스킬트리 하나씩 확인
for(int i=0; i<skill_trees.length; i++) {
String str = skill_trees[i];
// 하나하나 skills에 포함되어 있는지
for(int j=0; j<str.length(); j++) {
char c = str.charAt(j);
if(skills.contains(c)) {
sb.append(c);
}
}
// indexOf는 문자열(skill)에 해당 문자열이 포함되어 있으면 위치를 반환
if(skill.indexOf(sb.toString()) == 0) {
count += 1;
}
sb.delete(0, sb.length());
}
return count;
}
}
Reference
この問題について([プログラマー-レベル2]スキルツリー[Java]), 我々は、より多くの情報をここで見つけました https://velog.io/@minuk1236/프로그래머스-Level-2-스킬트리-Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol