[K번째 수]
My answer
def solution(array, commands):
tmp,answer = [],[]
for i in commands:
tmp=array[i[0]-1:i[1]]
tmp.sort()
answer.append(tmp[i[2]-1])
tmp=[]
return answer
Another answer
def solution(array, commands):
return [sorted(array[a[0]-1:a[1]])[a[2]-1] for a in commands]
--------------------------------------------------------------------
def solution(array, commands):
return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
더보기
[map]
map(f, iterable)은 함수(f)와 반복 가능한(iterable) 자료형을 입력받고 입력받은 자료형의 각 요소를 함수 f가 수행한 결과를 묶어서 돌려주는 함수이다.
즉 위에서는 commands를 lambda함수에 집어넣은것이다. 두 코드 모두 똑같지만 반복문의 방법을 다르게 한 것이다.
[완주하지 못한 선수]
My answer
def solution(participant, completion):
answer = ''
participant.sort()
completion.sort()
for i in range(len(completion)):
if(participant[i]!=completion[i]):
return participant[i]
return participant[len(participant)-1]
Another answer
def solution(participant, completion):
dictVal={}
answer = ''
# 이름을 key로 저장 후, 완주했으면 1씩 뺌. 0이 아닌 것은 완주 못한 사람
for i in participant:
if i in dictVal.keys():
dictVal[i]+=1
else:
dictVal[i]=1
for j in completion:
if j in dictVal.keys():
dictVal[j]-=1
for k in dictVal.keys():
if dictVal[k]!=0:
answer = k
return answer
[소수 만들기]-[Summer/Winter Coding(~2018)]
My answer
def solution(nums):
tmp=[]
count=0
for i in range(len(nums)-2):
for j in range(i+1,len(nums)-1):
for k in range(j+1,len(nums)):
tmp.append(nums[i]+nums[j]+nums[k])
tmp.sort()
answer=[1]*(max(tmp)+1)
for i in range(2,max(tmp)+1):
if(answer[i]==1):
for j in range(i*i,max(tmp)+1,i):
answer[j]=0
answer[i]=i
answer=answer[2:]
for i in tmp:
if(i in answer):
count+=1
return count
Another answer
def is_prime(num):
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def solution(nums):
from itertools import combinations
comb = list(combinations(nums, 3))
cnt = 0
for tup in comb:
if is_prime(sum(tup)):
cnt += 1
return cnt
더보기
from itertools import ...
하나의 리스트에서 모든 조합을 계산을 해야 한다면, permutations(순열-순서가있음), combinations을 사용하고, 두개 이상의 리스트에서 모든 조합을 계산해야 한다면, product를 사용한다. 세 함수 모두 itertools 라이브러리를 불러와야 한다. 즉 위의 코드에서는 nums에서 3개의 수를 뽑아 만들 수 있는 모든 조합을 comb에 저장한후 소수임을 판별하였고, 내 코드는 모든 조합을 3중 for문을 사용하여 비효율적으로 구했다.
[내적]-[월간 코드 챌린지 시즌 1]
My answer
def solution(a, b):
answer = 0
for i in range(len(a)):
answer+=a[i]*b[i]
return answer
Another answer
def solution(a, b):
return sum([x*y for x, y in zip(a,b)])
더보기
[zip]
zip(*iterable)은 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 함수로 위에서는 a,b배열에서 하나씩 뽑아서 곱해서 더함.
내가 쓴 코드를 함수들을 써서 더 쉽게 풀었다.
[음양 더하기]-[월간 코드 챌린지 시즌 2]
My answer
def solution(absolutes, signs):
answer = 0
for i in range(len(signs)):
if(signs[i]==False):
absolutes[i]=-absolutes[i]
answer+=absolutes[i]
return answer
Another answer
def solution(absolutes, signs):
return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))
[없는 숫자 더하기]-[월간 코드 챌린지 시즌 3]
My answer
def solution(numbers):
answer = 0
num=[0,1,2,3,4,5,6,7,8,9]
for i in num:
if i not in numbers:
answer+=i
return answer
Another answer
def solution(numbers):
return 45 - sum(numbers)
728x90
반응형
'코딩테스트 > 프로그래머스[Python]' 카테고리의 다른 글
[프로그래머스] 09/26 (1) (0) | 2021.09.26 |
---|---|
[프로그래머스] 09/24 (2) (0) | 2021.09.24 |
[프로그래머스] 09/16 (3) (0) | 2021.09.16 |
[프로그래머스] 09/15 (6) (0) | 2021.09.15 |
[프로그래머스] 09/14 (3) (0) | 2021.09.14 |