프로그래머스 파이썬 기초 해석 :: 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 값은 참 중요한 녀석이었는데, 너무 당연하게 느껴져서 중요함을 몰랐다 







댓글

이 블로그의 인기 게시물

[KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제

KT 에이블스쿨 : 6-7차 미니프로젝트 - 제안서 기반 솔류션 기획 및 설계

KT 에이블스쿨 : 클라우드 서비스 1일차 정리