눈송이의 개발생활
[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++에 익숙해서 코드가 세로로 길게 쓰는 것 같다.
✅ 한 줄로 쓸 수 있는 파이썬의 장점을 활용해보자!
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers Lv.1]숫자 문자열과 영단어 (Python) (0) | 2022.03.23 |
---|---|
[Programmers Lv.1]콜라츠 추측 & 최대공약수와 최소공배수 (Python) (0) | 2022.03.10 |
[Programmers Lv.1]정수 제곱근 판별 & 정수 내림차순으로 배치하기 (Python) (0) | 2022.03.10 |
[Programmers Lv.1]2016년 & 핸드폰 번호 가리기 (Python) (0) | 2022.03.05 |
[Programmers Lv.1]행렬의 덧셈 & x만큼 간격이 있는 n개의 숫자 (Python) (0) | 2022.03.05 |
Comments