728x90
https://www.acmicpc.net/problem/20291
- 예제 입력1
8
sbrus.txt
spc.spc
acm.icpc
korea.icpc
sample.txt
hello.world
sogang.spc
example.txt
- 예제 출력1
icpc 2
spc 2
txt 3
world 1
- 문제 접근
- 확장자를 기준으로 확장자 이름과 해당 확장자가 몇 개인지 출력
- 무조건 온점( . )으로 확장자 구분
- 확장자의 이름 순으로 내림차순 정렬
- 문제 해결
- 트리맵으로 쉽게 풀릴 것 같음
- N번만큼 반복문을 돌려서 확장자를 Map에 추가, 존재한다면 Value를 1증가
- 슈도 코드
<String, Integer> 트리맵 선언
fileCont (파일 개수 저장)
for(fileCont번 반복){
str(파일 이름 저장)
extension = str.subString(str.indexOf(".")+1)
if(extension에 포함되면){
treeMap의 extension(key)값에 value를 1 증가해서 저장
} else {
treeMap에 추가
}
}
treeMap키 treeMap값 출력
- 코딩하기
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int fileCount = Integer.parseInt(br.readLine());
TreeMap<String, Integer> fileMap = new TreeMap<>(); // 트리맵 선언
for(int i = 0; i < fileCount; i++){
String fileName = br.readLine();
String extension = fileName.substring(fileName.indexOf(".")+1); // 점 뒤의 확장자 추출
if(fileMap.containsKey(extension)){ // 맵에 있는 확장자라면
// 1증가(동일 Key라면 Value가 덮어씌워지는 것을 이용)
fileMap.put(extension, fileMap.get(extension)+1);
} else{ // 맵에 있는 확장자가 아니면 추가
fileMap.put(extension, 1);
}
}
StringBuilder sb = new StringBuilder();
for(Map.Entry<String, Integer> entry : fileMap.entrySet()){
sb.append(entry.getKey()).append(" ").append(entry.getValue()).append("\n");
}
System.out.println(sb);
}
728x90
'Coding Test > Problem Number' 카테고리의 다른 글
[Java] Z [1074번] (0) | 2024.07.20 |
---|---|
[Java] 서로 다른 부분 문자열의 개수 [11478번] (0) | 2024.07.20 |
[Java] 회사에 있는 사람 [7785번] (0) | 2024.07.19 |
[Java] 수 이어 쓰기 1 [1748번] (0) | 2024.07.19 |
[Java] 알고리즘 수업 - 피보나치 수 1 [24416번] (0) | 2024.07.19 |