728x90
우선 시험이 끝난 후 조금 코딩연습했던 내용들을 올려볼 생각인데.....
일단 시험을 너무 망쳤지만 알고리즘 공부의 중요성을 한번 더 알게 되었다.
사실 1차 서류 합격으로도 나에게는 큰 경험이지만
일주일도 안되는 시간동안 알고리즘 공부하는 건 쉽지 않았다.
무튼 조금씩 꾸준히 공부할 예정이다.
내가 풀어본 문제는 이 문제!
NYPC에서 문제들을 보면서 나름 어려웠다.
내가 이 문제를 보자마자 생각난건 바로 아스키코드!
아스키코드로 비교하면서 특수문자의 경우는 파이썬에서 isalnum()라는 매소드로
특수문자가 존재하는지 비교하여 문제를 해결했다.
# 비밀번호 검사
n = str(input())
def pwCheck(x):
checkL, checkS, checkN, checkP, check= 0, 0, 0, 0, 1
if len(x) < 8 or len(x) > 16:
return print('invalid')
for i in range(len(x)):
num = ord(x[i])
# 숫자 & e대소문자 & 특수문자 & 영어
if ord('A') <= num and ord('Z') >= num:
checkL += 1
elif ord('a') <= num and ord('z') >= num:
checkS += 1
elif ord('0') <= num and ord('9') >= num:
checkN += 1
elif x[i].isalnum() == False:
checkP += 1
else:
check = 0
if (checkL * checkS * checkN * checkP * check) == 0:
print('invalid')
else:
print('valid')
pwCheck(n)
이렇게 풀었는데
if - elif문을 사용안하고
if문으로 특수문자 처음시작하는 부분부터 마지막까지 조건을 줘도 괜찮다.
그렇게 조건을 주는 경우에는 check 변수는 1개만 써도 무관하다.
결국 조건에 일치하지 않으면 0을 반환하면서
check 변수들의 곱했을 때 0이 나온다면 결론적으로 위에 조건에 일치하지 않는 값이 존재하는 것으로
invalid를 반환시켜줬다 .
NYPC 문제를 조금 더 풀어놨는데 틈틈히 다른 알고리즘도 풀면서
다음에는 더 좋은 알고리즘 포스팅으로 찾아오겠습니다.
728x90
'Algorithm > 알고리즘 이론' 카테고리의 다른 글
BFS/DFS (깊이우선/너비우선) 알고리즘에 대한 정리 - 세기무민 (0) | 2022.05.29 |
---|---|
브루트 포스(무차별 대입)알고리즘에 대한 정리 - 세기무민 (0) | 2022.05.22 |
그리디(탐욕) 알고리즘에 대한 정리 - 세기무민 (0) | 2022.05.18 |
세무민의 코딩일기 : 코딩 테스트를 준비해보자....[부제 : linked list] (0) | 2021.01.24 |