프로그래머스 파이썬 기초 해석 :: n의 배수 (boolen값, not 활용)
프로그래머스 URL
https://school.programmers.co.kr/learn/courses/30/lessons/181937
프로그래머스 코딩 카테고리
코딩 기초 트레이닝
Day 4 연산, 조건문 - n의 배수
Lv.0
문제 설명
정수 num과 n이 매개 변수로 주어질 때, num이 n의 배수이면 1을 return n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.
제한 사항
2 ≤ num ≤ 100
2 ≤ n ≤ 9
문제 이해
[입력] num, n 정수
[출력] 리턴값은 정수 0 또는 1
%로 나머지 연산, if문으로 조건문 생성
------------------------
내가 푼 풀이
1. 처음 쓴건 아래처럼 일반적인 if문
def solution(num, n):
if num % n == 0 :
return 1
else :
return 0
2. 한줄 if문도 가능할 것 같아서 해봄
def solution(num, n):
result = 1 if num%n == 0 else 0
return result
개선할 사항
나는 한줄 if 문의 값을 result라는 변수에 넣고, 리턴값으로 줬는데
굳이 변수로 안주고 한줄 if문 자체를 바로 리턴하는게 가능하다
def solution(num, n):
return 1 if num%n == 0 else 0
#return 1 if num%n == 0 else return 0 -> 불가능. return은 하나만
다른 문제풀이 해석
if문 대신, bool 값을 활용해서 간결하게 작성이 가능하다 .
문제에서 0 또는 1을 출력값으로 했는데, 이는 곧 bool값에서는 False 또는 True의 값이 된다.
0은 논리적으로 False이고, 0 이외의 숫자는 True
False를 int형 변환하면 0, True를 int형 변환하면 1
1. num % n == 0 형태
def solution(num, n):
return int(num % n == 0)
약분이 되는 값이라서 (num%n == 0) 이면 True가 되고
약분이 안되는 값이라서, num%n 값이 0이외 다른 값이 나올때는, False가 된다.
이런 bool값을 int형 변환한 것
2. not 함수로 판별
위 코드랑 bool 값을 쓰는 건 맞지만,
0인지 아닌지 판별하는 방식이 다르다.
def solution(num, n):
return int(not(num % n))
i) 약분이 되는 경우
32 % 2 = 0 등등
int(not(0)) = int(not(False)) = int(True) = 1
ii) 약분이 안되는 경우
33 % 2 = 1 또는 11 % 4 = 7 등등
int(not( 0이외의 값 )) = int(not(True)) = int(False) = 0
------------------------
느낀점
bool값을 배울때는 이걸 언제 쓰나 했는데, 이렇게 쓰는걸 느꼈다.
그러고보니 사실 컴퓨터의 모든 데이터는 0, 1로 저장을 되는거니까 bool 값은 참 중요한 녀석이었는데, 너무 당연하게 느껴져서 중요함을 몰랐다
댓글
댓글 쓰기