1209 TIL 코딩 테스트 연습
멘토님 선별 문제, 별은 난이도
코딩테스트 연습으로 lv.0을 계속 풀다가 윗단계를 도전하니
확실히 시간도 오래걸리고 어려웠지만, 수업시간에 배웠던 스택과 큐를 직접 사용해보니까 재밌었다.
두 정수 사이의 합🌟
(https://school.programmers.co.kr/learn/courses/30/lessons/12912)
def solution(a, b):
answer = 0
number = [a,b]
number.sort()
for i in range(number[0],number[1]+1):
answer += i
return answer
문자열 내 p와 y의 개수🌟
(https://school.programmers.co.kr/learn/courses/30/lessons/12916)
def solution(s):
s = s.lower()
p = s.count("p")
y = s.count("y")
if p == 0 and y == 0:
return True
else:
return True if p == y else False
나머지가 1이 되는 수 찾기🌟
(https://school.programmers.co.kr/learn/courses/30/lessons/87389)
def solution(n):
a = []
for x in range(1, n):
if n % x == 1:
a.append(x)
return a[0]
부족한 금액 계산하기🌟
(https://school.programmers.co.kr/learn/courses/30/lessons/82612)
def solution(price, money, count):
expect=0
i = 1
for i in range(count+1):
expect += price * i
answer = expect - money
#돈이 모자라지 않으면 0
if answer < 0:
return 0
return answer
신규 아이디 추천 (정규표현식)🌟🌟
(https://school.programmers.co.kr/learn/courses/30/lessons/72410)
정규표현식 참고블로그
.이 모든 문자라는 뜻이 있어서 [.] 이렇게 써줘야 "." 진짜 점을 의미한다.
^a는 a로 시작, a$는 a로 끝나는 것, | 는 or ( and는 &)
https://nachwon.github.io/regular-expressions/
import re
def solution(new_id):
new_id = new_id.lower()
new_id = re.sub('[^0-9a-z-_.]','',new_id)
# 3단계
while new_id.count("..") > 0:
new_id = new_id.replace("..",".")
# 4단계
new_id = re.sub('^[.]|[.]$', '', new_id)
# 5단계
new_id = 'a' if len(new_id) == 0 else new_id
# 6단계 ***
if len(new_id) >= 16:
new_id = new_id[:15]
new_id = re.sub('[.]$', '', new_id)
# 7단계
elif len(new_id) <= 2:
new_id = new_id + (new_id[-1] * (3 - len(new_id)))
return new_id
# 다른 사람의 풀이 참고해보기
import re
def solution(new_id):
st = new_id
st = st.lower()
st = re.sub('[^a-z0-9\-_.]', '', st)
st = re.sub('\.+', '.', st)
st = re.sub('^[.]|[.]$', '', st)
st = 'a' if len(st) == 0 else st[:15]
st = re.sub('^[.]|[.]$', '', st)
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
return st
올바른 괄호(스택&큐) 🌟🌟
https://school.programmers.co.kr/learn/courses/30/lessons/12909
블로그 참고
스택과 큐: https://devuna.tistory.com/22
풀이 참고: https://m.blog.naver.com/crm06217/221827395221
#'('라면 스택에 넣고, ')'라면 스택에서 꺼내기, 0이 되면 True
def solution(s):
stack = []
for i in range(len(s)):
if s[i] == '(':
stack.append('(')
else:
if len(stack) == 0:
return False
else:
stack.pop()
if len(stack) == 0:
return True
else:
return False
같은 숫자는 싫어(스택&큐)🌟🌟
(https://school.programmers.co.kr/learn/courses/30/lessons/12906)
- 스택 활용
def solution(arr):
answer = []
for i in range(len(arr)):
answer.append(arr[i])
if i>0 and arr[i] == arr[i-1]:
answer.pop()
return answer