눈송이의 개발생활

[Programmers Lv.1]짝수와 홀수 & 하샤드 수 (Python) 본문

Algorithm/Programmers

[Programmers Lv.1]짝수와 홀수 & 하샤드 수 (Python)

꾸지새미언니

문제 - 짝수와 홀수

https://programmers.co.kr/learn/courses/30/lessons/12937

내 코드 

def solution(num):
    if num % 2 == 0:
        return "Even"
    else:
        return "Odd"

다른 사람 풀이 

def solution(num):
    return num % 2 and "Odd" or "Even"

해결 방법

이 문제를 보면서 프로그래머스 레벨 1 문제들은 코드를 간결하게 쓰는 것을 연습하는 용도이라는 것을 알았다. 

쉽게 풀 수 있었지만 다른 사람이 쓴 풀이를 보면 감탄이 나왔다. 

어떻게 저렇게 심플하고 예쁘게 코드를 바로 짤 수 있는거지....😮

 

아래 풀이를 더 설명해보자면, 파이썬은 앞에서부터 논리 연산을 한다고 한다. 

예를 들어 num % 2 == 0 일 때,

num % 2 and "Odd" and "Even"  →  0 or "Even" 

위와 같이 바꿀 수 있다. 

왜나하면, and 연산자는 둘 중 하나만 0이라도 결과가 0이 되기 때문에, "Odd"의 여부는 중요하지 않게 되는 것이다. 

0 or "Even"의 경우, or 연산자는 둘 다 0이어야 결과가 0이 된다.

따라서 num % 2 == 0 이면 "Even"이다.

 

✅ 간단하게 쓸 수 있는 방법이 많으니까 맞았다고 넘어가지 말고, 더 효율적인 방법 생각하기 

✅ 파이썬에 대해서 더 자세히 공부해보자 

 

 


문제 - 하샤드 수

https://programmers.co.kr/learn/courses/30/lessons/12947

내 코드 

def solution(x):
    arr = list(str(x))
    s = sum(map(int, arr))
    if x % s == 0:
        answer = True
    else:
        answer = False
    return answer

다른 사람 풀이 

def solution(x):
    return x % sum([int(c) for c in str(x)]) == 0

해결 방법

이 문제도 위의 짝수와 홀수같이 코드를 깔끔하게 작성하는 방법을 배울 수 있다. 

나는 string을 list로 바꾸고, 또 그 원소 하나하나를 int로 바꾸고 다 더하는 방법을 선택했다. 

길고 복잡하게...🙄ㅎㅎ

아직 자바나 c++에 익숙해서 코드가 세로로 길게 쓰는 것 같다. 

 

✅ 한 줄로 쓸 수 있는 파이썬의 장점을 활용해보자!

Comments