2299. Strong Password Checker II
문제는 간단하다. 인자로 주어진 password
가 주어진 조건을 모두 만족하는지 판별하는 문제이다.
주어진 조건은 다음과 같다.
"!@#$%^&*()-+"
이다.False
를 리턴한다.class Solution:
def strongPasswordCheckerII(self, password: str) -> bool:
special_characters = set("!@#$%^&*()-+")
digits = set('0123456789')
lowercase = set('abcdefghijklmnopqrstuvwxyz')
uppercase = set('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
is_lower = is_upper = is_digit = is_special = False
characters = 0
for i, c in enumerate(password):
if i > 0 and password[i-1] == c:
return False
if c in lowercase:
is_lower = True
elif c in uppercase:
is_upper = True
elif c in digits:
is_digit = True
elif c in special_characters:
is_special = True
characters += 1
return is_digit and is_lower and is_upper and is_special and characters >= 8
builtin 되어 있는 함수를 활용하면 아래의 코드처럼 작성할 수도 있다.
class Solution:
def strongPasswordCheckerII(self, password: str) -> bool:
special_characters = set("!@#$%^&*()-+")
is_lower = is_upper = is_digit = is_special = False
for i, c in enumerate(password):
if i > 0 and password[i-1] == c:
return False
if c.islower():
is_lower = True
elif c.isupper():
is_upper = True
elif c.isdigit():
is_digit = True
elif c in special_characters:
is_special = True
return is_digit and is_lower and is_upper and is_special and len(password) >= 8
정규 표현식을 이용해서 접근해 볼 수도 있겠다. 하지만 하지 않지.