Algorithm/Programmers 73

[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] 짝지어 제거하기

from collections import deque def solution(s): if len(s) % 2 == 1 : return 0 s = deque(s) temp = [] i = s.popleft() while s : j = s.popleft() if i == j : if not s : return 1 else : if temp : i = temp.pop() else : i = s.popleft() continue else : temp.extend(i) i = j return 0 너무 복잡하게 생각한 문제... ※ 더 쉬운 풀이는 밑에 있어요 ! ※ 1) 홀수 거르기, 처음 from collections import deque def solution(s): if len(s) % 2 == 1 : r..

[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이 다 틀렸다고 가정하여 "알아 ..