[후기] LINE AD Platform 인턴 코딩테스트 후기

Jung Wish·2021년 5월 5일
0

[후기] LINE AD Platform 인턴 코딩테스트 후기

까먹을까봐 간단하게 적는 코딩테스트 회고

문제는 역시나 저작권 때문에 자세히 적을 수 없고, 이번 시험에서는 복붙을 막아 놓지 않아서 시험 끝나기 한 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
profile
Frontend Developer, 올라운더가 되고싶은 잡부 개발자, ISTP, 겉촉속바 인간, 블로그 주제 찾아다니는 사람

0개의 댓글