코딩 테스트를 살면서 가장 열심히 준비중이다..ㅋㅋ
사실 네이버 AI 부트캠프 준비도 있지만
그 다음날 바로 원티드 코딩테스트도 재미로 한번 보고 싶어 신청해서
더 열심히 해보는 중이다!!
언제나 내게 기회가 되는것이 있으면 도전하고 또 도전하자!
풀면서 느낀점은 전형적인 재귀 문제를 구현하는 것이다!
프로그래머스에 레벨 2에 있는 카카오 문제들은 대부분 구현 문제인거같다!
이 문제의 경우 3가지로 나누어서 풀었는데
문제를 읽고 이 세개를 정의했다면 풀었을거같다! -> 1번과 2번은 정의 했지만 3을 못했다ㅜ
재귀문제가 나오면 더럭 겁을 먹는데 그러지말고 그냥 함수안에서 내 자신 함수를 한번 더 호출한다 생각하자!
def check(p):
stack = []
for i in p:
if i == '(':
stack.append(i)
else:
if not len(stack):
return False
elif stack[-1] == '(':
stack.pop()
return False if len(stack) else True
def setUV(p):
left,right = 0,0
u,v= "",""
for i in range(len(p)):
if p[i] =="(":
left +=1
if p[i] ==")":
right +=1
if left == right:
u = p[:i+1]
v = p[i+1:] if i+1 < len(p) else ""
break
return u,v
def rec(p):
if not len(p):
return ""
result = ""
u,v = setUV(p)
if check(u):
result = u + rec(v)
else:
temp = '('
temp += rec(v)
temp += ')'
u = u[1:-1]
for i in u:
if i == '(':
temp += ')'
else:
temp += '('
result += temp
return result
def solution(p):
answer = ''
# () 개수가같음
# 함수가 3개 필요 - 재귀, 올바른 괄호인지확인, uv나누는거
if p == "":
return ""
if check(p):
return p
else:
answer = rec(p)
return answer
이 문제는 처음에 이해를 못했었다,, 블로그를 무려 4개를 보고 그 다음 이해했다!!
N진수 게임 문제 링크
인수 n,t,m,p가 나오는데 m이 전체 인원인데 내가 세어야할 숫자가 t였다
근데 t가 m보다 커서 어떻게 풀지,, 당황했던 문제였다!
def jinsu(num,base):
l = '0123456789ABCDEF'
q,r = divmod(num,base)
if q == 0:
return l[r]
else:
return jinsu(q,base) + l[r]
전체 코드
def jinsu(num, base):
l = '0123456789ABCDEF'
q,r = divmod(num,base)
if q == 0:
return l[r]
else:
return jinsu(q,base) + l[r]
def solution(n, t, m, p):
answer = ''
l =""
for i in range(m*t):
l+= jinsu(i,n)
#print(l)
j = p-1
while len(l) >j and t >0:
answer += l[j]
j +=m
t -=1
return answer