728x90
반응형
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
public class P2607 {
static String original;
static HashSet<String> original_set = new HashSet<>();
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
original = br.readLine();
for (int i = 0; i < original.length(); i++) {
original_set.add(String.valueOf(original.charAt(i)));
}
int result = 0;
for (int i = 0; i < n - 1; i++) {
String now = br.readLine();
if (IsSameStructure(now) == true) {
result++;
continue;
}
if (now.length() == original.length()) {
// 글자수 같은경우
int count = 0;
for (int j = 0; j < original.length(); j++) {
// 한글자씩 순회
if (original.charAt(j) != now.charAt(j)) {
count++;
}
if (count >= 2)
break;
}
if (count == 1)
result++;
} else if (now.length() == original.length() + 1) {
// 한글자 많은경우
int idx_now = 0;
int idx_org = 0;
int count = 0;
while (idx_now < now.length() && idx_org < original.length()) {
if (now.charAt(idx_now) != original.charAt(idx_org)) {
// 글자가 다름
count++;
if (idx_now == idx_org) {
idx_now++;// 오리지널만 한글자 먼저출발
} else {
// 두번이상 틀린건 나가
break;
}
} else {
idx_now++;
idx_org++;
}
}
if (count <= 1)
result++;
} else if (now.length() + 1 == original.length()) {
// 한글자 적은경우
int idx_now = 0;
int idx_org = 0;
int count = 0;
while (idx_now < now.length() && idx_org < original.length()) {
if (now.charAt(idx_now) != original.charAt(idx_org)) {
// 글자가 다름
count++;
if (idx_now == idx_org) {
idx_org++;// now만 한글자 먼저출발
} else {
// 두번이상 틀린건 나가
break;
}
} else {
idx_now++;
idx_org++;
}
}
if (count <= 1)
result++;
}
}
System.out.println(result);
}
static boolean IsSameStructure(String str) {
boolean flag = true;
if (original.length() == str.length()) {
for (int i = 0; i < str.length(); i++) {
if (!original_set.contains(String.valueOf(str.charAt(i)))) {
flag = false;
break;
}
}
} else {
flag = false;
}
return flag;
}
}
문제 조건을 잘못 읽고 계속 풀었다.
비슷한 구성이라는 조건이
1) 각 단어를 구성하는 문자 종류가 서로 같고
2) 각 단어를 구성하는 문자 종류의 각각의 개수도 같다
인데
2번을 '문자 길이가 같다'로 잘못 읽고 품.
짜증나니까 나중에 다시 풀어봄.
728x90
반응형
'코딩 > 백준-자바' 카테고리의 다른 글
[자바] 백준 3758번: KCPC (0) | 2023.03.05 |
---|---|
[자바] 백준 17848번: 진우와 달 여행(Small) (0) | 2023.03.04 |
[자바] 백준 19941번: 햄버거 분배 (0) | 2023.03.03 |
[자바] 백준 1515번: 수 이어 쓰기 (0) | 2023.03.02 |
[자바] 백준 21921번: 블로그 (0) | 2023.03.01 |
댓글