Skip to content

Commit 20da33a

Browse files
committed
issue #26 Strong Password java
1 parent d0b31da commit 20da33a

1 file changed

Lines changed: 73 additions & 0 deletions

File tree

src/hackerrank/StrongPassword.java

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package hackerrank;
2+
3+
import java.util.regex.Matcher;
4+
import java.util.regex.Pattern;
5+
6+
public class StrongPassword {
7+
8+
static int minimumNumber(int n, String password) {
9+
// 조건에 맞는 6자리 이상의 비번이 되기위해서 필요한 자리수를 출력하는 문제
10+
11+
//sol1
12+
/*
13+
String numbers = "0123456789";
14+
String lower_case = "abcdefghijklmnopqrstuvwxyz";
15+
String upper_case = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
16+
String special_characters = "!@#$%^&*()-+";
17+
18+
//각각 조건을 boolean형태로 정의
19+
Boolean isNumbers = false;
20+
Boolean isLower_case = false;
21+
Boolean isUpper_case = false;
22+
Boolean isSpecial_characters = false;
23+
24+
int minNum = 0;
25+
26+
//조건이 참이면 해당 조건 값을 true로 변경
27+
for (String s : password.split("")) {
28+
if(numbers.contains(s)) isNumbers = true;
29+
if(lower_case.contains(s)) isLower_case = true;
30+
if(upper_case.contains(s)) isUpper_case = true;
31+
if(special_characters.contains(s)) isSpecial_characters = true;
32+
}
33+
34+
//각 조건이 true가 아니면 필요한 자리수 1증가
35+
if(!isNumbers) minNum++;
36+
if(!isLower_case) minNum++;
37+
if(!isUpper_case) minNum++;
38+
if(!isSpecial_characters) minNum++;
39+
40+
return minNum < 6 - n ? 6 - n : minNum;
41+
*/
42+
43+
//sol2 정규식사용
44+
int minNum = 0;
45+
46+
Pattern numbers = Pattern.compile("[0-9]");
47+
Matcher m = numbers.matcher(password);
48+
if(!m.find()) minNum++;
49+
50+
Pattern lower_case = Pattern.compile("[a-z]");
51+
m = lower_case.matcher(password);
52+
if(!m.find()) minNum++;
53+
54+
Pattern upper_case = Pattern.compile("[A-Z]");
55+
m = upper_case.matcher(password);
56+
if(!m.find()) minNum++;
57+
58+
Pattern special_characters = Pattern.compile("[!@#$%^&*()\\-+]");
59+
m = special_characters.matcher(password);
60+
if(!m.find()) minNum++;
61+
62+
return 6 > minNum + n ? 6 - n : minNum;
63+
}
64+
65+
public static void main(String[] args) {
66+
System.out.println(minimumNumber(3, "Ab1") + ", ans: 3");
67+
System.out.println(minimumNumber(4, "Ab1!") + ", ans: 2");
68+
System.out.println(minimumNumber(6, "Ab1!12") + ", ans: 0");
69+
System.out.println(minimumNumber(11, "#HackearRnk") + ", ans: 1");
70+
System.out.println(minimumNumber(4, "4700") + ", ans: 3");
71+
System.out.println(minimumNumber(4, "IGEC") + ", ans: 3");
72+
}
73+
}

0 commit comments

Comments
 (0)