문제는 역시나 저작권 때문에 자세히 적을 수 없고, 이번 시험에서는 복붙을 막아 놓지 않아서 시험 끝나기 한 5분 전에 복붙해서 저장해놓았다.
시험문제는 3개였고, 120분안에 풀어야했다.
상반기 라인 공채에 비해서는 문제가 쉬웠다(상.대.적.으.로)
하지만, 그게 내가 잘봤다는 이야기는 아니다(^^)
어쨌든, 1번이랑 3번은 조금 평이하게 기출로 많이 접하는 문제였고 1번은 자료구조, 3번은 그리디를 이용해서 풀면 문제 자체를 푸는 것은 해낼 수 있다. 문제는 2번인데 어떤 알고리즘을 중점적으로 봐야할지는 모르겠다. 투포인터인가..? 어쨌든 효율성 여건 때문에 다들 여기서 시간을 많이 썼다는 평들이 많더라..! 나 역시도 여기서 1시간 정도를 썼는데 막판에는 부분점수라도 있겠지 하는 마음으로 에라이 하는 마음으로 풀었다. 효율성은 모르겠다. 시간복잡도 계산도 요즘 열심히 안했더니 머리가 안돌아간다.
원래 블로그 후기는 존댓말로 작성했었는데, 앞으로 코딩테스트 후기는 그냥 이렇게 적기로 했다.
아래는 문제 순서대로 저장해놓은 코드다.
def solution(inputString):
answer = 0
brackets = {'(':')', '{':'}', '[':']', '<':'>'}
stack = []
total_brackets = 0
for i in range(len(inputString)):
if inputString[i] in brackets.keys():
stack.append(inputString[i])
elif inputString[i] in brackets.values():
if i == 0:
break
if len(stack) == 0:
answer = -i
return answer
cur = stack.pop()
if brackets[cur] == inputString[i]:
total_brackets += 1
else:
answer = -i
return answer
if len(stack) > 0:
answer = -(len(inputString)-1)
return answer
if total_brackets != 0:
answer = total_brackets
return answer
def solution(array):
answer = [-1]*(len(array))
# 효율적인 풀이란 무엇인가..............때흑
for i in range(len(array)):
gap = 1
while i-gap >= 0 or i+gap < len(array):
if i-gap >= 0:
if array[i-gap] > array[i]:
answer[i] = i-gap
break
else:
if array[answer[i-gap]] > array[i]:
answer[i] = answer[i-gap]
break
if i+gap < len(array):
if array[i+gap] > array[i]:
answer[i] = i+gap
break
else:
if array[answer[i+gap]] > array[i]:
answer[i] = answer[i+gap]
break
gap += 1
return answer
# Greedy
def solution(ads):
answer = 0
ads = sorted(ads, key=lambda x: (x[0], -x[1]))
cur_t = ads.pop(0)[0] + 5
while len(ads) > 0:
filtered_ad = sorted([[st, cost] for st, cost in ads if cur_t > st], key=lambda x:-x[1])
if len(filtered_ad) == 0:
cur_t = ads.pop(0)[0]
else:
st, cost = filtered_ad[0]
answer += (cur_t - st) * cost
ads.remove(filtered_ad[0])
cur_t += 5
return answer