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

+ Recent posts