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
반응형
728x90
반응형

프로그래머스 문제

 

안녕하세요! 왠지 오늘은 하나 더 풀고싶어서 풀어봤습니다!

프로그래머스에서 진행한 월간코드첼린지라는 게 있더라구요. 여기서 기출한 문제입니다.

문제링크

 

이 문제도 어렵지 않았는데, 파이썬으로 풀면 정말 쉬운 문제 유형인 것 같습니다.

중복 제거용으로 set 써주었고 sort 사용하여 정렬까지 해 주었습니다.

def solution(numbers):
    answer = []
    n2 = numbers.copy()
    for i in range(len(numbers)):
        for j in range(len(numbers)):
            if i == j:
                continue
            answer.append(numbers[i] + numbers[j])
    answer = list(set(answer))
    answer.sort()
    return answer

그럼 이만~!

728x90
반응형
728x90
반응형

프로그래머스 연습문제 올바른 괄호

올바른괄호 문제링크

조건 두면서 확인해가는 문제였습니다.

먼저 처음에 ')' 가 들어오면 False를 return 하도록 하고, 두 짝을 cnt 변수로 확인했습니다.

def solution(s):
    answer = True
    
    cnt = 0
    if s[0] == ')':
        return False
    for ch in s:
        if cnt == 0 and ch == ')':
            return False
        if ch == '(':
            cnt += 1
        if ch == ')':
            cnt -= 1
    if cnt != 0:
        return False

    return True

오늘은 이걸로 ㅎㅎ 

이만 :)

728x90
반응형
728x90
반응형

프로그래머스 Level 2 스킬트리

코테 준비는 조금 귀찮지만 그래도 꾸준히 하지 않으면 실력을 다 잃어버리는 것 같아서 하루에 한 문제라도 꾸준히 다시 풀려고 합니다!

문제 링크  programmers.co.kr/learn/courses/30/lessons/49993
 

코딩테스트 연습 - 스킬트리

 

programmers.co.kr

 

from collections import deque
def solution(skill, skill_trees):
    answer = 0
    for item in skill_trees:
        dq = deque(skill)
        for s in item:
            if s in skill:
                if s != dq.popleft():
                    break
        else:
            answer += 1
                
    return answer

 

보통 python으로 문제를 풀 때 자료구조로 deque 를 많이 쓰게 되는 것 같습니다.

오늘은 진짜 오랜만에 간단하게.. 한 문제 풀기 :)

 

그럼 이만!

728x90
반응형

+ Recent posts