[백준/파이썬] 16944번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 16944번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
큐브러버는 문제가 안 풀릴때 게임을 만들면서 머리속으로 문제를 푸는 법을 생각한다. 드디어 게임이 완성되었고, 이 게임의 이름은 “리듬 테트리스”이다. “리듬 테트리스”는 리듬 게임과 테트리스를 동시에 하는 재미있는 게임이다. 문제에 여백이 부족해 게임을 할 수 있는 사이트의 링크는 생략한다.
리듬 테트리스를 하려면 먼저 회원 가입을 해야 한다. 유저는 이메일과 비밀번호를 입력해야 하고, 비밀번호는 아래 규칙을 지켜야 한다.
-
비밀번호는 알파벳 소문자, 대문자, 숫자, 특수문자로만 이루어져 있다.
-
비밀번호는 6글자 이상이어야 한다.
-
숫자는 하나 이상 포함되어야 한다.
-
알파벳 소문자는 하나 이상 포함되어야 한다.
-
알파벳 대문자는 하나 이상 포함되어야 한다.
-
특수 문자는 하나 이상 포함되어야 한다. 사용할 수 있는 특수 문자는 !@#$%^&*()-+이다.
구사과는 리듬 테트리스를 하기 위해 회원 가입을 하려고 한다. …
입력 요약
첫째 줄에 문자열의 길이 N(1 ≤ N ≤ 100), 둘째 줄에 문자열 S가 주어진다. S는 알파벳 소문자, 대문자, 특수문자(!@#$%^&*()-+), 숫자로만 이루어져 있다.
출력 요약
첫째 줄에 리듬 테트리스의 비밀번호 규칙을 지키기 위해 추가해야 하는 문자의 최소 개수를 출력한다.
코드
cp='!@#$%^&*()-+'
n=int(input())
s=input()
nc=sc=lc=cc=True
for c in s:
if c in cp:cc=False
elif ord('a')<=ord(c)<=ord('z'):sc=False
elif ord('A')<=ord(c)<=ord('Z'):lc=False
elif ord('0')<=ord(c)<=ord('9'):nc=False
r=0
for f in [nc,sc,lc,cc]:
if f:r+=1
print(max(6-n,r))
설명
핵심은 구현 관점에서 큐브러버는 문제가 안 풀릴때 게임을 만들면서 머리속으로 문제를 푸는 법을 생각한다. 드디어 게임이 완성되었고, 이 게임의 이름은 “리듬 테트리스”이다. “리듬 테트리스”는 리듬 게임과 테트리스를 동시에 하는 재미있는 게임이다. …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기