6_5 - syh39/ProblemSolving GitHub Wiki

K번째수

출처: (https://programmers.co.kr/learn/courses/30/lessons/42748)

난이도 : 1

풀이여부 : Y

유형 : 정렬

풀이 방법

def solution(array, commands):
    answer = []
    for i in commands: // 커맨드 돌면서
        answer.append(answer1(array, i)) // 각 커멘드의 답을 answer 배열에 저장
    return answer


def answer1(array, command):
    print('answer1')
    array = array[command[0]-1:command[1]] // 자르기
    array.sort() // 정렬
    return array[command[2]-1] // 해당 인덱스 리턴

다른 사람의 풀이 방법:

def solution(array, commands):     
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands)) 
    // 람다 표현식으로 함수와 배열을 맵으로 매칭해주고 각 답을 리스트에 담아서 리턴

가장 큰 수

출처: (https://programmers.co.kr/learn/courses/30/lessons/42746)

난이도 : 2

풀이여부 : N

유형 : 정렬

풀이 방법

# 다른 사람의 풀이 방법 참고
def solution(numbers):
    numbers = list(map(str, numbers)) # 숫자 배열을 string으로 변환
    answer = str(int(''.join(sorted(numbers, key=lambda x : x*3, reverse=True)))) # string 을 전부 *3 해주고 정렬(3자리 다 비교하기 위해) 후 빈칸없이 join / int 변환 후 다시 string으로 변환해주는 이유는 숫자가 000일 경우 0으로 표시해주기 위해
    return answer

결론

풀이 로직은 맞췄지만 구현을 몰라서 코드를 못짰던 문제다. 파이썬 언어만 잘 알아도 구현은 쉽게 되는 것 같다.

소수 찾기

출처: (https://programmers.co.kr/learn/courses/30/lessons/42839)

난이도 : 2

풀이여부 : N

유형 : 완전탐색

풀이 방법

# 다른 사람의 풀이 방법 참고
from itertools import permutations
import math


def solution(numbers):
    num = [n for n in numbers]  # '17' -> ['1', '7']
    per = []

    for i in range(1, len(numbers)+1):
        per += list(permutations(num, i))  # i개씩 순열조합

    new_num = [int(('').join(p)) for p in per]  # int 형의 순열 조합
    return countPrimeNumber(set(new_num))  # 중복 제거 후 함수에 넘김


def countPrimeNumber(new_num):
    ans = 0
    for n in new_num:
        checkPrime = True
        if(n < 2):  # 2보다 더 큰 수에 한해서
            continue
        for i in range(2, int(math.sqrt(n))+1):  # 순열 구하는 방법
            if n % i == 0:
                checkPrime = False
                break
        if checkPrime:  # 소수인 경우 count++
            ans += 1
    return ans

결론

풀이 로직은 맞췄지만 구현을 몰라서 코드를 못짰던 문제다. 파이썬 언어만 잘 알아도 구현은 쉽게 되는 것 같다.