반응형
SMALL
문제 정보
문제명 - 서로 다른 부분 문자열의 개수
난이도 - 실버 III
문제 번호 - 11478번
문제 링크
https://www.acmicpc.net/problem/11478
문제
문자열 S가 주어졌을 때, S의 서로 다른 부분 문자열의 개수를 구하는 프로그램을 작성하시오.
부분 문자열은 S에서 연속된 일부분을 말하며, 길이가 1보다 크거나 같아야 한다.
예를 들어, ababc의 부분 문자열은 a, b, a, b, c, ab, ba, ab, bc, aba, bab, abc, abab, babc, ababc가 있고, 서로 다른것의 개수는 12개이다.
입력
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.
출력
첫째 줄에 S의 서로 다른 부분 문자열의 개수를 출력한다.
예제 입력/출력
예제 입력 예제 출력 ababc 12
알고리즘 분류
● 자료 구조
● 문자열
● 해시를 사용한 집합과 맵
● 트리를 사용한 집합과 맵
소스코드
package Lv2_Silver;
import java.io.*;
import java.util.*;
/**
* @author HanHoon
* @category 자료 구조, 문자열, 해시를 사용한 집합과 맵, 트리를 사용한 집합과 맵
* https://www.acmicpc.net/problem/11478
*/
public class BOJ_S3_11478_서로_다른_문자열의_개수 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder str = new StringBuilder();
// S: 문자열 S
String S = br.readLine();
HashMap<String, Character> map = new HashMap<>();
for (int i = 0; i < S.length(); i++)
for (int j = i+1; j <= S.length(); j++)
map.put(S.substring(i,j), ' ');
str.append(map.size());
System.out.print(str);
br.close();
}
}
BaekJoon List
기회는 준비된 자에게 찾아온다.
반응형
LIST
'BaekJoon > Silver' 카테고리의 다른 글
[BOJ/JAVA] 백준 10815 : 숫자 카드 (자바) (0) | 2023.03.29 |
---|---|
[BOJ/JAVA] 백준 1269 : 대칭 차집합 (자바) (0) | 2023.03.29 |
[BOJ/JAVA] 백준 1620 : 나는야 포켓몬 마스터 이다솜 (자바) (0) | 2023.03.28 |
[BOJ/JAVA] 백준 1764 : 듣보잡 (자바) (0) | 2023.03.28 |
[BOJ/JAVA] 백준 13241 : 최소공배수 (자바) (0) | 2023.03.28 |
댓글