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
결론
풀이 로직은 맞췄지만 구현을 몰라서 코드를 못짰던 문제다. 파이썬 언어만 잘 알아도 구현은 쉽게 되는 것 같다.