프로그래머스 58

[Python] 음양 더하기

def solution(absolutes, signs): answer = 0 for num, sign in zip(absolutes, signs) : if sign : answer += num else : answer += -num return answer 풀이 zip 함수를 이용한다면 간단하게 풀 수 있는 문제이다. ✔︎ zip 함수 : 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 함수이다. >>> list(zip([1, 2, 3], [4, 5, 6])) [(1, 4), (2, 5), (3, 6)] >>> list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9])) [(1, 4, 7), (2, 5, 8), (3, 6, 9)] for문을 이용한다면 튜플을 하나씩 반환하고, 해당..

[Python] 폰켓몬

def solution(nums): l = len(nums) / 2 k = len(set(nums)) return k if k < l else l 풀이 1. set함수를 이용해 nums에 있는 중복 폰켓몬들을 제거한다. 그렇게 된다면 nums에는 폰켓몬들이 각각 한 종류씩만 남게 된다. 2. 그 갯수가 " nums에 있는 폰켓몬의 수 / 2 " 보다 작다면 k(폰켓몬의 종류 수) 를 반환하고, 가져갈 수 있는 폰켓몬의 수보다 크다면 l(최대 가져갈 수 있는 폰켓몬의 수)을 반환한다. 참고할만한 다른 분의 풀이 def solution(nums): return min(len(nums)//s, len(set(nums)))

[Python] 로또의 최고 순위와 최저 순위

def solution(lottos, win_nums): count_z = lottos.count(0) lottos = sorted(lottos, reverse=True) answer = 0 for num in lottos : if num == 0 : break elif num in win_nums : answer += 1 rank = {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6} return [rank[answer+count_z], rank[answer]] 풀이 먼저 0의 개수를 count함수를 이용해 추출한다. 최고 순위는 0(알아볼수 없는 숫자)이 다 맞았다고 가정하여 "알아볼 수 있는 숫자 중 맞은 개수 + 0의 개수"의 순위이고, 최저 순위는 0이 다 틀렸다고 가정하여 "알아 ..

[Python] 소수 만들기

from itertools import combinations def solution(nums): coms = list(combinations(nums, 3)) answer = 0 for com in coms : num = sum(com) count = 0 for i in range(2, num+1) : if num % i == 0 : count += 1 if count == 1 : answer += 1 return answer 풀이 ① combinations 함수를 사용하여 입력받은 nums에서 숫자 3개를 가져와 만들수 있는 조합을 coms에 리스트로 받는다. ② for 문을 통해 3개의 조합의 합이 ➀ (2번째 for문) 2부터 자기자신까지 반복하면서 i로 나누었을때 나누어 떨어지면 count에 +..