[프로그래머스] lv0. 짝수의 합, 짝수 홀수 개수, 짝수는 싫어요

주연·2023년 1월 27일
0

Python 문제 풀이

목록 보기
11/20
post-thumbnail

짝수의 합

230127

문제

정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

제한사항
0 < n ≤ 1000

풀이

def solution(n):
    sum = 0
    for i in range(n+1):
        if i % 2 == 0:
            sum += i
    return sum

ㅎ.. 나도 이렇게 구질하게 풀고 싶진 않았어

  • 다른 사람 풀이
def solution(n):
    return sum([i for i in range(2, n + 1, 2)])

range를 생각하긴 했는데 range(1, n+1, 2)를 작성했다. 이렇게 하면 홀수의 합이 되는데 여기서 짝수로 어떻게 하면 바꿀 수 있는지 생각을 못 했다.
불필요한 변수도 만들지 않아야 하는데ㅎ

for문 한줄로 작성하자
(참고 https://leedakyeong.tistory.com/entry/python-for%EB%AC%B8-if%EB%AC%B8-%ED%95%9C-%EC%A4%84%EB%A1%9C-%EC%BD%94%EB%94%A9%ED%95%98%EA%B8%B0)

range만 생각을 못하고 for문 한 줄로 하고 변수를 생성하지 않았다면 이렇게는 할 수 있었겠지

def solution(n):
    return sum(i for i in range(n+1) if i % 2 == 0)

효율 생각하자...

짝수 홀수 개수

230127

문제

문제 설명
정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항
1 ≤ num_list의 길이 ≤ 100
0 ≤ num_list의 원소 ≤ 1,000

입출력 예

num_listresult
[1, 2, 3, 4, 5][2, 3]
[1, 3, 5, 7][0, 4]

풀이

def solution(num_list):
    even = 0
    odd = 0
    for i in num_list:
        if i % 2 == 0:
            even += 1
        else:
            odd += 1
    return [even, odd]

# 한줄로
def solution(num_list):
    return [sum(1 for i in num_list if i % 2 == 0), sum(1 for i in num_list if i % 2 != 0)]

#짱 길다...ㅎㅋ
  • 다른 사람 풀이
#1
def solution(num_list):
    answer = [0,0]
    for n in num_list:
        answer[n%2]+=1
    return answer

#2
def solution(num_list):
    odd = sum(1 for n in num_list if n % 2)
    return [len(num_list) - odd, odd]

짝수랑 홀수를 따로 구하려다보니+ 어떻게든 축약하자는 생각에
내가 작성한 코드처럼 나왔다ㅎ

#1은 아예 생각을 못 했다. 센스 짱인 듯 배열 안에서 짝홀을 구분한다니
배워뒀다가 다음 비슷한 문제가 나오면 나도 써봐야지

#2는 조금만 생각했다면 할 수 있었던 듯하다. 길면 줄일 방법을 생각하자

그런데 어떻게 if n % 2만 썼는데 홀수만 구할 수 있지?
-> if의 동작 방식 때문, if는 True와 0이 아닌 수는 참이고 False와 None, 0은 거짓이기 때문이다.

짝수는 싫어요

230129

문제

문제 설명
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.

제한사항
1 ≤ n ≤ 100

입출력 예

nresult
10[1, 3, 5, 7, 9]
15[1, 3, 5, 7, 9, 11, 13, 15]

풀이

def solution(n):
    return list(range(1,n+1,2))
  • 다른 사람 풀이
#for문을 이용한 풀이
def solution(n):
    return [x for x in (range(1,n+1,2))]
profile
공부 기록

0개의 댓글