문제(출처: https://www.acmicpc.net/problem/9951)
< Word Extraction >
문제 풀이
HashSet에 단어를 저장한 뒤 정렬하여 출력한다.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.StringTokenizer;
public class _9951_ { // Word Extraction
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
String str = "";
HashSet<String> set = new HashSet<>();
while (!(str = bf.readLine()).equals("#")) {
st = new StringTokenizer(str);
while (st.hasMoreTokens()) {
str = st.nextToken();
String word = "";
boolean flag = false;
for (int i = 0; i < str.length(); i++) {
if (Character.isAlphabetic(str.charAt(i)) || Character.isDigit(str.charAt(i))) {
if (Character.isAlphabetic(str.charAt(i))) {
flag = true;
}
word += Character.toLowerCase(str.charAt(i));
}
}
if (word.equals("") || !flag) {
continue;
}
set.add(word);
}
ArrayList<String> list = new ArrayList<>(set);
Collections.sort(list);
set.clear();
for (String x : list) {
bw.write(x + "\n");
}
bw.write("\n");
}
bw.flush();
}
}
변수)
str : 문장
set : 단어 저장하는 HashSet
word : 단어
flag : 알파벳 여부
list : HashSet -> list
#이 입력되기 전까지 문장을 입력받아 다음 과정을 반복한다.
1) 공백 기준으로 자른 단어를 숫자와 알파벳만 추출한다.
2) 알파벳 또는 알파벳+숫자로 이루어져 있다면 HashSet에 추가한다.
3) HashSet을 ArrayList로 변환한 후 오름차순으로 정렬한다.
4) ArrayList를 출력한다.
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 6973_Dynamic Dictionary Coding (0) | 2025.01.21 |
---|---|
[Baekjoon] 29934_Important Messages (1) | 2025.01.20 |
[Baekjoon] 11518_Morse (0) | 2025.01.16 |
[Baekjoon] 4775_Spelling Be (1) | 2025.01.15 |
[Baekjoon] 18294_Biodiversity (0) | 2025.01.14 |