본문 바로가기
Python/알고리즘

[COS PRO 2급 #6-6] 만드는 것보다 검사하는게 힘들죠

by 포푸리 (POPOOLY) 2023. 2. 9.
반응형

문제설명

X 사이트에서는 회원가입을 할 때 다음의 규칙을 지켜 비밀번호를 생성해야 합니다.

```
1. 한 개 이상의 알파벳 대문자를 포함해야 합니다.
2. 두 개 이상의 알파벳 소문자를 포함해야 합니다.
3. 두 개 이상의 숫자를 포함해야 합니다.
```

생성하고자 하는 비밀번호 password가 매개변수로 주어질 때, 생성가능한 비밀번호면 true를 그렇지 않으면 false를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.

매개변수 설명

생성하고자 하는 비밀번호 password가 solution 함수의 매개변수로 주어집니다.
* password는 알파벳 대문자, 소문자, 숫자로만 이루어진 문자열입니다.
* password의 길이는 5 이상 15 이하입니다.

return 값 설명

생성가능한 비밀번호면 true를 그렇지 않으면 false를 return 합니다.

예시

| password     | return |
|--------------|--------|
| "helloworld" | false  |
| "Hello123"   | true   |

예시설명

예시 #1
알파벳 대문자와 숫자를 포함하지 않았습니다.

예시 #2
알파벳 대문자 1개, 알파벳 소문자 4개, 숫자 3개를 포함했으므로 생성할 수 있습니다.

문제 코드

def solution(password):
    capital_count, small_count, digit_count = 0, 0, 0
    for p in password:
        if p >= 'A' and p <= 'Z':
            capital_count += 1
        elif p >= 'a' and p <= 'z':
            small_count += 1
        elif p >= @@@ and p <= @@@:
            digit_count += 1
    if @@@:
        answer = True
    else:
        answer = False
    return answer

풀이

def solution(password):
    capital_count, small_count, digit_count = 0, 0, 0
    for p in password:
        if p >= 'A' and p <= 'Z':
            capital_count += 1
        elif p >= 'a' and p <= 'z':
            small_count += 1
        elif p >= '0' and p <= '9':
            digit_count += 1
    if capital_count >= 1 and small_count >= 2 and digit_count >= 2:
        answer = True
    else:
        answer = False
    return answer

댓글