15日目
13640 ワード
プログラマ
質問:チュートリアル
プログラマーは二級問題をやり直した.
説明のためにParserというクラスが作成されました.
そしてstream演算を使用しました.
質問の説明は次のリンクです.
https://programmers.co.kr/learn/courses/30/lessons/64065?language=java
に答える
使用言語しようげんご:java java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
class Solution {
public static List<Integer> solution(String s) {
Parser parser = new Parser(s, new ArrayList<>());
parser.parseTuple();
return parser.getTuple();
}
public static class Parser {
private String pattern;
private List<Integer> tuple;
public Parser(String pattern, List<Integer> tuple) {
this.pattern = pattern;
this.tuple = tuple;
}
public List<Integer> getTuple() {
return tuple;
}
public void parseTuple() {
if (Objects.isNull(pattern)) {
throw new IllegalArgumentException("pattern is required");
}
if (Objects.isNull(tuple)) {
throw new IllegalArgumentException("tuple is required");
}
String s = pattern.substring(1, pattern.length() - 1); // 양 끝 괄호를 벗김
final String[] splitResults = s.split("},\\{");
Arrays.stream(splitResults)
.map(this::replaceBracketAndComma)
.sorted(Comparator.comparing(String::length))
.forEach(this::addTuple);
}
private String replaceBracketAndComma(String s) {
return s
.replaceAll("}", "")
.replaceAll("\\{", "");
}
private void addTuple(String str) {
final String[] chars = str.split(",");
for (String s : chars) {
if (!tuple.contains(Integer.parseInt(s))) {
tuple.add(Integer.parseInt(s));
}
}
}
}
}
Reference
この問題について(15日目), 我々は、より多くの情報をここで見つけました https://velog.io/@myhouse34/15일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol