Algorithm/Python

[Python] 프로그래머스 코딩테스트 연습 > 나누어 떨어지는 숫자 배열(논리 연산자, 자료형 별 Bool값)

Codest 2023. 1. 19. 00:29

안녕하세요! 오늘은 나누어 떨어지는 숫자 배열 문제를 풀어보겠습니다.

쉬운 문제지만 논리 연산자와 자료형 별 Bool값에 대해 공부할 수 있는 문제라서 가져왔습니다.

 

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

모든 문제의 저작권은 프로그래머스에게 있음을 밝힙니다.

목차

 

  1. 문제 설명
  2. 풀이 과정

 1. 문제 설명

 

 

문제는 간단합니다.

arr를 탐색하며 divisor로 나누어 떨어지는 숫자들을 배열에 담아 오름차순으로 정렬합니다.

이때, 나누어 떨어지는 숫자가 없다면 [-1]을 return 하면 됩니다.


2. 풀이 과정

 

  • 일반적인 풀이

 

def solution(arr, divisor):
    answer = sorted([num for num in arr if num % divisor == 0])
    if answer == []:
        return [-1]

    return answer

 

리스트 컴프리헨션을 이용하여 arr에 있는 숫자 중 divisor로 나누어 떨어지는 숫자만 리스트로 만들었고 sorted() 함수를 통해 오름차순 정렬 해 주었습니다.

아래에는 조건문을 통해 answer이 빈 리스트인 경우 [-1]을 return 했습니다.

 

 

  • 논리 연산자 or을 이용한 풀이

 

def solution(arr, divisor):
    return sorted([num for num in arr if num % divisor == 0]) or [-1]

 

우선 위의 코드를 이해하기 위해서는 논리 연산자인 and와 or에 대해 알아야 합니다.

 

A and B

 

논리식 결괏값
True and True True
True and False False
False and True False
False and False False

 

and 연산은 두 값이 모두 True 일 때만 True를 반환하고 한 값이라도 False라면 False를 반환합니다.

 

A or B

 

논리식 결괏값
True or True True
True or False True
False or True True
False or False False

 

or 연산은 두 값 중 하나라도 True이면 True를 반환하고 두 값이 모두 False 일 때만 False를 반환합니다.

 

def solution(arr, divisor):
    A = sorted([num for num in arr if num % divisor == 0])
    B = [-1]
	
    return A or B

 

B는 값이 있는 리스트 이므로 True고 A는 값이 있을 땐 True, 빈 리스트인 경우에는 False입니다.

결국 True or True 아니면 False or True인데 전자는 둘 다 True이므로 앞에 있는 True인 정렬된 리스트가 반환되고 후자는 True인 [-1]이 반환됩니다.

자료형 별 Bool값을 아신다면 더욱 이해가 편할 겁니다.

 

자료형 별 Bool값

 

설명 Bool 값
"" 빈 문자열 False
"apple" 혹은 " " 값이 있는 문자열
(공백만 있어도 O)
True
[ ] 빈 리스트 False
[1, 2, 3] 값이 있는 리스트 True
0 숫자 0 False
-1 혹은 3.14 혹은
루트 2
0을 제외한 모든 숫자
(실수)
True
{} 빈 딕셔너리 False
() 빈 튜플 False
set() 빈 집합 False

 

오늘은 나누어 떨어지는 숫자 배열 문제를 통해 논리연산자 and와 or 그리고 자료형 별 Bool값에 대해 공부해 보았습니다. 도움이 되셨다면 하트와 구독 부탁드립니다. 감사합니다.

반응형