[스파르타코딩클럽]데이터분석 과정/PYTHON

[Python 코드카타] 47 ~ 49번 (프로그래머스)

doo_ 2024. 1. 19. 12:40

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

> list.sort(key = ) 활용

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

> 다른 방법

def solution(strings, n):
    l1 = []
    for ch in strings:
        l1.append(ch[n] + ch)
    l1.sort()
    l2 = []
    for ch in l1:
        l2.append(ch[1:])
    return l2

 

48번 K번째 수 정렬 

def solution(array, commands):
    answer = []
    a = array
    c = commands
    t = []
    for i in c: # commands 별로 수행하기 위해 for문으로 분리
        t = a[i[0]-1:i[1]] # 각 commands에 따라 array 정렬 및 추출
        t.sort()
        answer.append(t[i[2]-1])
    return answer

> 위를 좀 더 간편하게 한 식

def solution(array, commands):
    answer = []
    for command in commands:
        i,j,k = command
        answer.append(list(sorted(array[i-1:j]))[k-1])
    return answer

> map(함수식, 값) 함수 활용

ef solution(array, commands):
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))

 

49번 두 개 뽑아서 더하기

def solution(numbers):
    a = []
    n = len(numbers)
    for i in range(n):
        for j in range(i+1,n):
            b = numbers[i]+numbers[j]
            a.append(b)
    answer = []
    for v in a:
        if v not in answer:
            answer.append(v)
    answer.sort()
    return answer

> 위를 좀 더 간단하게

def solution(numbers):
    answer = []
    for i in range(len(numbers)):
        for j in range(i+1, len(numbers)):
            answer.append(numbers[i] + numbers[j])
    return sorted(list(set(answer)))

> 다른 라이브러리 활용 combination

from itertools import combinations

def solution(numbers):
    answer = []
    l = list(combinations(numbers, 2))
    for i in l:
        answer.append(i[0]+i[1])
    answer = list(set(answer))
    answer.sort()
    return answer