728x90
반응형

라인플러스 2019 상반기 인턴 채용 코딩테스트 

 

문제 해설 링크

 

2019년 상반기 LINE 인턴 채용 코딩테스트 문제 해설 - LINE ENGINEERING

LINE에서 개발 직군을 뽑을 때 신입이든 경력이든 가장 먼저 보는 것이 코딩 테스트입니다. LINE의 코딩 테스트는 일반적인 알고리즘 경진대회와는 경향이 조금 다른데요. 알고리즘 경진대회는 1��

engineering.linecorp.com

 

from collections import deque
def solution(conyPosition, brownPosition):
    time = 0
    visit = [[0]*2 for _ in range(200001)]
    q = deque()
    q.append((brownPosition, 0))
    
    while 1:
        conyPosition += time
        if conyPosition > 200000 or conyPosition < 0:
            return -1
        if visit[conyPosition][time%2]:
            return time
        for i in range(0, len(q)):
            current = q.popleft()
            currentPosition = current[0]
            newTime = (current[1]+1)%2
            
            newPosition = currentPosition - 1
            if newPosition >= 0 and not visit[newPosition][newTime]:
                visit[newPosition][newTime] = True
                q.append((newPosition, newTime))
            newPosition  = currentPosition + 1
            if newPosition < 200001 and not visit[newPosition][newTime]:
                visit[newPosition][newTime] = True
                q.append((newPosition, newTime))
            newPosition = currentPosition * 2
            if newPosition < 200001 and not visit[newPosition][newTime]:
                visit[newPosition][newTime] = True
                q.append((newPosition, newTime))
        time += 1
728x90
반응형
728x90
반응형

프로그래머스 연습문제

 

안녕하세요 :) 

오늘 가지고 온 문제는 카카오 인턴십 문제입니다. 

카카오 문제 치고 굉장히 쉬운 편에 속하는데요, 저는 좀 지저분하게 풀었습니다

문제 링크
 

코딩테스트 연습 - 키패드 누르기

[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"

programmers.co.kr

 

문제에 나온 조건에만 맞추면 되는 쉬운 문제였습니다 ㅎㅎ 아래에 바로 코드 올려요!

from collections import deque
def checkLeft(num):
    possible = ['1', '4', '7', '2', '5', '8', '0']
    if num in possible:
        return True
    return False
def checkRight(num):
    possible = ['2', '5', '8', '0', '3', '6', '9']
    if num in possible:
        return True
    return False

def solution(numbers, hand):
    answer = ''
    numbers = deque(numbers)

    pads = {'1': (0, 0), '2': (0, 1), '3': (0, 2),
            '4': (1, 0), '5': (1, 1), '6': (1, 2),
            '7': (2, 0), '8': (2, 1), '9': (2, 2),
            '*': (3, 0), '0': (3, 1), '#': (3, 2)}
    
    left = pads['*']
    right = pads['#']
    for num in numbers:
        num = str(num)
        if checkLeft(num) and not checkRight(num):
            answer  += 'L'
            left = pads[num]
        elif not checkLeft(num) and checkRight(num):
            answer += 'R'
            right = pads[num]
        elif checkLeft(num) and checkRight(num): 
            leftDist = abs(pads[num][0] - left[0]) + abs(pads[num][1] - left[1])
            rightDist = abs(pads[num][0] - right[0]) + abs(pads[num][1] - right[1])
            if leftDist < rightDist:
                answer += 'L'
                left = pads[num]
            elif rightDist < leftDist:
                answer += 'R'
                right = pads[num]
            elif rightDist == leftDist:
                if hand == 'right':
                    answer += 'R'
                    right = pads[num]
                if hand == 'left':
                    answer += 'L'
                    left = pads[num]
    return answer

좀 지저분하긴 하네요..

 

그럼 이만 ㅎㅎ

728x90
반응형

+ Recent posts