1972번: 놀라운 문자열
대문자 알파벳으로만 이루어져 있는 문자열이 있다. 이 문자열에 대해서 ‘D-쌍’이라는 것을 정의할 수 있는데, 이 문자열에 포함되어 있는, 거리가 D인 두 문자를 순서대로 나열한 것을 이 문
www.acmicpc.net
👇 내가 작성한 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while(!(str = br.readLine()).equals("*")) {
int result = 0;
int num = 0;
for(int i = 1; i < str.length(); i++) { // 놀라운 문자열일 경우 D-쌍의 개수
num += i;
}
Set<String> set = new HashSet<>(); // 중복 제거를 위한 Set 선언
if(str.length() <= 2) { // 1, 2글자일 경우 무조건 놀라운 문자열임
System.out.println(str + " is surprising.");
} else {
for(int i = 1; i <= str.length() - 1; i++) {
for(int j = 0; j < str.length() - i; j++) {
String first = String.valueOf(str.charAt(j));
String second = String.valueOf(str.charAt(i + j));
set.add(first + second); // 조합한 두 문자를 set에 추가
}
result += set.size(); // set길이를 result 변수에 누적합
set.clear(); // set 초기화
}
if(result == num) System.out.println(str + " is surprising.");
else System.out.println(str + " is NOT surprising.");
}
}
}
}
느낀 점 및 정리 ✍️
1. set을 이용하여 중복 제거를 하였고, D-쌍마다 set의 크기를 result 변수에 더해주고 set을 초기화 시켜 놀라운 문자열일 경우의 문자열 개수와 일치하는지 판별해주었다.
'Algorithm & SQL > BOJ' 카테고리의 다른 글
[백준 14502번 / Java] BOJ 14502 : 연구소(BFS, DFS, 브루트포스) (0) | 2024.03.26 |
---|---|
[백준 15565번 / Java] BOJ 15565 : 귀여운 라이언(투 포인터) (0) | 2024.03.26 |
[백준 2210번 / Java] BOJ 2210 : 숫자판 점프(DFS) (0) | 2024.03.24 |
[백준 16173번 / Java] BOJ 16173 : 점프왕 쩰리 (Small) (0) | 2024.03.24 |
[백준 2309번 / Java] BOJ 2309 : 일곱 난쟁이 (0) | 2024.03.16 |