안녕하세요. 회사와 함께 성장하고 싶은 KOSE입니다.
이번 포스팅은 백준 문자열 파일 정리 자바 풀이를 작성하고자 합니다.
문제 출처: https://www.acmicpc.net/problem/20291
1. 풀이 소스
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
HashMap<String, Integer> map = new HashMap<>(); // 개수를 저장할 map 선언
HashSet<String> set = new HashSet<>(); // 셋으로 고유한 문자 저장
for (int i = 0; i < n; i++) {
String type = br.readLine().split("\\.")[1]; // 정규식 문제로 이스케이프로 . 처리
if (!set.contains(type)) { // 만약 key가 없다면 map에 저장
set.add(type);
map.put(type, 1);
} else map.put(type, map.get(type) + 1); // 이미 값이 있는 경우 + 1
}
List<String> sortType = new ArrayList<>(set); // set을 문자열에 addAll
Collections.sort(sortType); // 오름차순 정렬
StringBuilder sb = new StringBuilder();
for (String key : sortType) sb.append(key).append(" ").append(map.get(key)).append("\n");
System.out.print(sb);
}
}
2. 풀이 중점 사항
.으로 분리하기
split 인자로 들어가는 String 값은 regex 정규식입니다. "."로 문자열을 분리하기 위해서는 "\\."을 사용하여. 을 분할하기 위한 문자로 인식할 수 있도록 해주어야 합니다.
HashSet
HashSet에 현재 key가 존재하는지 파악하는 메서드는 set.contains() 입니다. contains()에 값이 있다면 true, 없다면 false가 됩니다. 이를 바탕으로 값을 추가할 수 있습니다.
List의 컬렉션 생성자
set에 있는 key를 모두 List에 추가하고자 할 때, "컬렉션 생성자"를 토대로 컬렉션을 생성할 수 있습니다.
new ArrayList<>(set) 으로 샐 성자에 set을 넣어서 컬렉션을 생성하는 방법입니다.
이상으로 파일 정리 자바 풀이를 마치도록 하겠습니다. 감사합니다.!
'Algorithm' 카테고리의 다른 글
[Algorithm] 백준 문자열 문제 - 회문(17609) 자바 풀이 (0) | 2023.05.16 |
---|---|
[Algorithm] 백준 문자열 문제 - 단어 뒤집기 2(17413) 자바 풀이 (0) | 2023.05.16 |
[Algorithm] 백준 문자열 문제 - 염색체(9342) 자바 풀이 (0) | 2023.05.16 |
[Algorithm] 백준 문자열 문제 - 비밀번호 발음하기(4659) 자바 풀이 (0) | 2023.05.16 |
[Algorithm] 백준 문자열 문제 - 부분 문자열(6550) 자바 풀이 (0) | 2023.05.16 |