반응형
🔺 문제
4659번: 비밀번호 발음하기
좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp
www.acmicpc.net
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
import java.util.*;
import java.io.*;
public class Main {
static String[] vowel = {"a", "e", "i", "o", "u"};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while(true) {
boolean isAcceptable = true;
String str = br.readLine();
if(str.equals("end")) break;
if(!checkOne(str) || !checkTwo(str) || !checkThree(str)) {
isAcceptable = false;
}
if(isAcceptable) {
sb.append("<"+str+"> is acceptable.").append("\n");
}
else {
sb.append("<"+str+"> is not acceptable.").append("\n");
}
}
System.out.println(sb);
}
// 조건 1
private static boolean checkOne(String s) {
for(int i = 0 ; i < s.length() ; i++) {
if(s.charAt(i) == 'a' || s.charAt(i) == 'e' || s.charAt(i) == 'i' || s.charAt(i) == 'o' || s.charAt(i) == 'u') {
return true;
}
}
return false;
}
// 조건 2
private static boolean checkTwo(String s) {
if(s.length() < 3) return true;
boolean[] words = new boolean[s.length()];
for(int i = 0 ; i < s.length() ; i++) {
if(s.charAt(i) == 'a' || s.charAt(i) == 'e' || s.charAt(i) == 'i' || s.charAt(i) == 'o' || s.charAt(i) == 'u') {
words[i] = true;
}
}
int cnt = 1;
for(int i = 0 ; i < s.length() - 1 ; i++) {
if(words[i] == words[i+1]) {
cnt++;
}
else {
cnt = 1;
}
if(cnt == 3) {
return false;
}
}
return true;
}
// 조건 3
private static boolean checkThree(String s) {
for(int i = 0 ; i < s.length() - 1 ; i ++) {
if(s.charAt(i) == s.charAt(i+1)) {
if(s.charAt(i) != 'e' && s.charAt(i) != 'o') {
return false;
}
}
}
return true;
}
}
|
cs |
✅ 해결 아이디어
✔ 구현 / 문자열
- 그냥 조건에 맞도록 다 썼다.... 길지만...
🔺 다른 풀이들
- 오 정규표현식과 Pattern의 Matcher를 사용하셨다
로그인
www.acmicpc.net
[백준] 4659번 비밀번호 발음하기 Java 문제 풀이
문제 좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들
aorica.tistory.com
→ 자음이 3번 연속 :[aeiou]{3,}
→ 모음이 3번 연속 :[^aeiou]{3,}
→ 자음으로만 구성 :^[^aeiou]+$
→ e,o를 제외한 문자가 2번 연속 반복되는 것 :([^eo])\\1+
- 이것도 깔끔하게 정규표현식이랑 matches활용,,,,,
로그인
www.acmicpc.net
💬 느낀 점
우와 정규표현식도 완전하게 잘 다룰 줄 모르고...
matches도 모르고..그래서 노가다했지만 맞았다...ㅎ
이런 문자열 문제 보면 긴장하게 된다,,,
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 1205번: 등수 구하기 (0) | 2023.07.31 |
---|---|
[백준/JAVA] 25757번: 임스와 함께하는 미니게임 (0) | 2023.07.30 |
[백준/JAVA] 10025번: 게으른 백곰 (0) | 2023.07.26 |
[백준/JAVA] 21921번: 블로그 (0) | 2023.07.25 |
[백준/JAVA] 3273번: 두 수의 합 (0) | 2023.07.24 |