1. 포켓몬
def solution(nums):
answer = 0
species = []
for num in nums:
if num not in species:
species.append(num);
if len(species) <= len(nums)//2:
answer = len(species)
else:
answer = len(nums)//2
return answer
빈 배열을 하나 만들고, 주어진 배열 nums의 모든 원소를 확인해 빈 배열에 없는 원소만을 추가한다. 이렇게 하면 species 배열은 모든 종류의 숫자가 각각 한 번씩만 들어 있는 배열이 된다. 이 배열의 길이, 즉 숫자의 종류 중에서, 최대 절반만 가져갈 수 있으므로, species 배열의 길이가 주어진 배열의 길이의 절반보다 클 때, 작거나 같을 때로 나누어 생각할 수 있다. 주어진 배열의 길이의 절반보다 크다면, 가져갈 수 있는 최대한의 숫자, 즉 주어진 배열의 길이의 절반 만큼을 가져갈 수 있다. 절반보다 작거나 같다면, 주어진 종류만큼의 숫자를 가져갈 수 있다.
2. 음양 더하기
def solution(absolutes, signs):
integers = []
for num in range(0, len(absolutes)):
if signs[num] == True:
integers.append(absolutes[num])
else:
integers.append(-1 * absolutes[num])
answer = sum(integers)
return answer
주어진 절댓값과 불리언 배열을 조합하여 정수를 만들고 이 값들을 더한다. 절댓값의 모든 원소에 대해, 각각의 인덱스에 대응하는 불리언 값에 따라 양수와 음수를 결정하고, 이를 sum으로 더해 준다.
3. 로또의 최고 순위와 최저 순위
def solution(lottos, win_nums):
zero = []
not_zero = []
for number in lottos:
if number == 0:
zero.append(number)
else:
if number in win_nums:
not_zero.append(number)
min = len(not_zero)
max = len(not_zero) + len(zero)
if min == 0:
min_class = 6
else:
min_class = 7-min
if max == 0:
max_class = 6
else:
max_class = 7-max
answer = [max_class, min_class]
return answer
최저 순위는 보이지 않는 숫자 0이 모두 틀리는 경우이고, 최고 순위는 모두 맞는 경우이다. 그러므로 먼저, 뽑은 숫자들 중에서 0의 개수를 파악하고, 이후 당첨 번호와 맞는 숫자의 개수를 파악한다. 가장 적게 맞춘 경우는 0이 모두 틀렸으므로, min은 not_zero의 개수가 되고, 가장 많이 맞춘 경우는 not_zero뿐만 아니라, zero의 개수까지 더한 결과이다. 이를 맞춘 갯수에 따라 등수로 나타내기 위해서 7에서min, max를 빼 주며, 0개를 맞춘 경우는 1개를 맞춘 것과 동일하게 6등이므로 따로 표기해 준다.
[Python] Programmers lv1 두 개 뽑아서 더하기, 문자열 내 마음대로 정렬하기 (0) | 2021.05.25 |
---|---|
[Python] Programmers lv1 3진법 뒤집기, 체육복 (0) | 2021.05.25 |
[Python] Programmers lv1 이상한 문자 만들기, 행렬의 덧셈, 예산 (0) | 2021.05.16 |
[Python] Programmers lv1 제일 작은 수 제거하기, 정수 내림차순으로 배치하기, 최대공약수와 최소공배수 (0) | 2021.05.15 |
[Python] Programmers lv1 콜라츠 추측, 정수 제곱근 판별, 자연수 뒤집어 배열로 만들기, x만큼 간격이 있는 n개의 숫자 (0) | 2021.05.14 |
댓글 영역