Algorithm/Programmers
[Programmers Lv.1]짝수와 홀수 & 하샤드 수 (Python)
꾸지새미언니
2022. 3. 7. 21:41
문제 - 짝수와 홀수
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++에 익숙해서 코드가 세로로 길게 쓰는 것 같다.
✅ 한 줄로 쓸 수 있는 파이썬의 장점을 활용해보자!