sm 기술 블로그

96. 11478(서로 다른 문자열의 개수) 본문

문제/백준_자바

96. 11478(서로 다른 문자열의 개수)

sm_hope 2022. 6. 21. 12:42
import java.io.*;
import java.util.*;

class Main {

	public static void main(String[] args)throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		HashSet<String> set = new HashSet<>();
		
		String S = br.readLine();
		
		for(int i = 0; i < S.length(); i++) {
			for(int j =i; j < S.length(); j++) {
				set.add(S.substring(i,j+1));
			}
		}
		
		System.out.println(set.size());
	}

}

문제요약

문자열이 들어오면 각 부분을 쪼개서 개수를 세시오. 단, 중복은 제외.

해설

문자열을 한글자부터 차근차근 자르기를 이용하면 된다.

 

자바에서 문자열을 자르는 방법은 substring을 이용하면 된다.

for(int i = 0; i < S.length(); i++) {
			for(int j =i; j < S.length(); j++) {
				set.add(S.substring(i,j+1));
			}
		}

Hello가 들어왔다고 생각해보자.

그러면 set에 들어가는 값은

H
He
Hel
Hell
Hello
e
el
ell
ello
l
ll
llo
l
lo
o

다음과 같이 값이 들어온다.

집합의 특징은 중복을 제거하고, 순서에대한 보장이 없다.

따라서 중복으로 값이 들어온다고 해도, 중복을 제거하기 때문에 문제되지 않는다.

'문제 > 백준_자바' 카테고리의 다른 글

98. 3009(네 번째 점)  (0) 2022.06.21
97. 1085(직사각형에서 탈출)  (0) 2022.06.21
95. 1269(대칭 차집합)  (0) 2022.06.21
94. 1764(듣보잡)  (0) 2022.06.20
93. 10816(숫자 카드2)  (0) 2022.06.20
Comments