[ALGORITHM] Programmers ALGORITHM 연습문제 Lv1 (3)

2 minute read


ALGORITHM Übung - Programmers

  • 알고리즘 문제 풀이를 통한 코딩 테스트 연습

서울에서 김서방 찾기

  • 24/10/2021

def solution(seoul):
    for i in range(len(seoul)):
        if seoul[i] == "Kim":
            return "김서방은 "+ str(i)+"에 있다"

# 다른 사람의 좋은 풀이
def solution(seoul):
    return "김서방은 {}에 있다".format(seoul.index("Kim"))

문자열 다루기 기본

  • 24/10/2021

    if len(s) == 4 or len(s) == 6:
        if s.isnumeric():
            return True
    return False

# 다른 사람의 좋은 풀이
def solution(s):
    return s.isdigit() and len(s) in (4, 6)

문자열 내림차순으로 배치하기

  • 24/10/2021

# 다른 사람의 좋은 풀이
def solution(s):
    return ''.join(sorted(s, reverse=True))

문자열 내 p와 y의 개수

  • 25/10/2021

def solution(s):
    num_p = 0
    num_y = 0

    for i in s.lower():
        if i == 'p':
            num_p += 1
        elif i == 'y':
            num_y += 1

    if num_p == num_y:
        return True
    return False
# 다른 사람의 좋은 풀이
def solution(s):
    return s.lower().count('p') == s.lower().count('y')

문자열 내 마음대로 정렬하기

  • 26/10/2021

def solution(strings, n):
    return sorted(strings, key=lambda x:(x[n],x))


두 정수 사이의 합

  • 26/10/2021

def solution(a, b):
    return sum([i for i in range(min(a,b),max(a,b)+1)])

# 다른 사람의 좋은 풀이
def solution(a, b):
    return sum(range(min(a,b),max(a,b)+1))

나누어 떨어지는 숫자 배열

  • 27/10/2021

def solution(arr, divisor):
    res = sorted([i for i in arr if i % divisor == 0])
    return res if len(res) > 0 else [-1]

같은 숫자는 싫어

  • 27/10/2021

def solution(arr):
    res = [arr[0]]
    for i in range(len(arr)):
        if arr[i] != res[-1]:
            res.append(arr[i])
    return res

가운데 글자 가져오기

  • 29/10/2021

def solution(s):
    return s[len(s)//2] if len(s) % 2 == 1 else s[(len(s)//2)-1] + s[len(s)//2]

# 다른 사람의 좋은 풀이
def solution(s):
    return str[(len(str) - 1) // 2:len(str) // 2 + 1]

[1차] 다트 게임

  • 29/10/2021

import re
p = re.compile("[0-9]+\D*")
int_p = re.compile("[0-9]+")

def solution(dartResult):
    s = p.findall(dartResult)
    int_s = int_p.findall(dartResult)

    result_num = []
    for i in range(3):
        if "S" in s[i]:
            if "#" in s[i]:
                result_num.append(int(int_s[i]) ** 1 * -1)
            else:
                result_num.append(int(int_s[i]) ** 1)
        elif "D" in s[i]:
            if "#" in s[i]:
                result_num.append(int(int_s[i]) ** 2 * -1)
            else:
                result_num.append(int(int_s[i]) ** 2)
        else:
            if "#" in s[i]:
                result_num.append(int(int_s[i]) ** 3 * -1)
            else:
                result_num.append(int(int_s[i]) ** 3)

    if "*" in s[0]:
        result_num[0] = result_num[0] * 2

    if "*" in s[1]:
        result_num[1] = result_num[1] * 2
        result_num[0] = result_num[0] * 2

    if "*" in s[2]:
        result_num[2] = result_num[2] * 2
        result_num[1] = result_num[1] * 2

    return sum(result_num)

# 다른 사람의 좋은 풀이
import re

def solution(dartResult):
    bonus = {'S' : 1, 'D' : 2, 'T' : 3}
    option = {'' : 1, '*' : 2, '#' : -1}
    p = re.compile('(\d+)([SDT])([*#]?)')
    dart = p.findall(dartResult)
    for i in range(len(dart)):
        if dart[i][2] == '*' and i > 0:
            dart[i-1] *= 2
        dart[i] = int(dart[i][0]) ** bonus[dart[i][1]] * option[dart[i][2]]

    return sum(dart)