-
[PCCE 모의고사 1] 2번 문제 해설알고리즘 이야기/프로그래머스 2022. 11. 2. 11:30
https://school.programmers.co.kr/learn/courses/15006/lessons/121337
-
[PCCE 모의고사 1] 2번 문제
문제 설명 문제 설명 정수가 담긴 변수 num이 주어졌을 때, num의 값이 양수인지, 0인지, 음수인지 판별하는 프로그램을 만들려고 합니다. 프로그램이 올바르게 작동하도록 빈칸을 채워주세요.
- num이 양수인 경우 "양수입니다"가 출력됩니다.
- num이 0인 경우 "0입니다"가 출력됩니다.
- num이 음수인 경우 "음수입니다"가 출력됩니다.
제한사항 - -20,000 ≤ num ≤ 20,000
입출력 예 유의사항 - elif와 else를 모두 사용해야 채점됩니다.
-
[PCCE 모의고사 1] 2번 문제 코드
(위 코드 에디터의 '▶' 버튼을 눌러 코드를 실행해 보세요! 오른쪽 콘솔창을 통해 코드의 실행 결과를 볼 수 있습니다.)
-
[PCCE 모의고사 1] 2번 문제 해설
2번 문제 부터는 본격적으로 제한사항, 입출력 예, 유의사항이 등장해요. 문제 설명 만큼이나 중요한 것들이니 꼭 잘 읽어봐야 돼요!
문제 자체는 간단해요. num이 양수인지, 0인지, 음수인지 판별하라는 것이죠. 이를 위해서는 조건문(IF statement)의 조건(condition)을 관계 연산(relational operation) 혹은 비교 연산(comparison operation)으로 만들 수 있어야 돼요. (관계 연산을 비교 연산이라고도 해요)
일단 조건문이 무엇인지 부터 살펴볼까요?
-
조건문이란 참(true)인지 거짓(false)인지, 조건을 만들어 판별하게 만드는 구문이에요. 예를 들어서 피카츄를 가르키면서 '피카츄는 노란색이야?'라고 물어본다면 '맞아!'라고 대답하겠죠?
피카츄는 노란색이 맞으니까요. 여기서 '피카츄는 노란색이야?'가 조건문의 조건이에요. '맞아!'라고 대답했고, 실제로 피카츄는 노란색이니까 이 조건은 '참'이 돼요. 참 쉽죠?
하지만 피카츄를 가리키면서 '피카츄는 파란색이야?'라고 물어본다면? '아니야..'라고 대답하겠죠. 피카츄는 노란색인데 파란색인지 물어봤으니 당연히 조건은 '거짓'이 돼요. 참 쉽죠?
파란색이냐고 물어보지 않고, 초록색이나 빨간색이냐고 물어봐도 '아니야..'라고 대답하겠죠? 노란색이 아닌 그 외(else)에 다른 색이 나오면 조건은 '거짓'이 돼요.
정리하면, 조건문의 조건(condition)이 참이면 참(true)이지만, 참이 아닌 것들은(else) 거짓(false)이 돼요. 참 쉽죠?
아래의 코드를 실행해 볼까요?
True가 출력된느 것을 볼 수 있어요. num이 3인데 2가 num보다 작냐고 물어봤기(조건) 때문이죠. 당연히 2는 3보다 작잖아요? 참이 맞죠. 그래서 True가 출력되었어요.
만약 조건문의 조건에서 '2 < num'이 '4 < num'으로 바뀌면 어떨까요? 위의 코드는 여러분들이 직접 수정해서 실행해 볼 수 있으니까 2를 4로 바꿔서 실행해 보세요. 그러면,
아무것도 출력되지 않을거에요. 왜? 조건이 거짓이기 때문이죠.
그렇다면 조건이 거짓일 때에도 출력하고 싶다면 어떻게 할 수 있을까요?
'else'를 사용하면 돼요!
위의 코드를 실행해 보면 False가 출력되는 것을 볼 수 있어요. num이 3인데 4가 num보다 작냐고 물어봤기 때문이죠. 당연히 거짓이 되겠죠? 그럴땐 else가 돼요. 조건문의 조건이 참일 땐 조건문 바로 아래의 코드가 실행되지만, 조건문의 조건이 거짓이고, else가 있다면 이럴 땐 else가 실행돼요.
만약 조건을 하나 더 추가하고 싶다면? 'elif'를 쓰면 돼요. elif는 else if를 줄인거에요. 아래의 코드를 볼까요?
코드를 실행해 보면 '2는 num보다 작아!'가 출력되는 것을 볼 수 있어요. 첫 번째 조건인 '4 < num'이 거짓이기 때문에 다음 조건을 판별한 것이죠. elif와 else는 이전의 조건이 거짓인 경우에 검사하는 곳이에요. 만약 첫 번째 조건이 참이었다면 elif나 else까지 가지도 않겠죠?
-
자, 문제를 풀기 위한 조건문에 대해 배워봤어요. 그럼 이제 문제를 풀어.. 보기 전에!
조건문의 조건을 만들기 위한 연산자에 대해 살펴볼거에요.
위에서 숫자가 큰지 작은지 비교하기 위해서 부등호(<)를 사용했어요. 이 부등호가 바로 관계 연산을 위한 관계 연산자(relational operator)에요. 파이썬에사 사용되는 관계 연산자는 6개가 있어요. 대부분 여러분들이 나는 내용을 기호로 바꾼 것일 뿐이라 쉽게 이해할 수 있어요! 아래의 표를 볼까요?
부호 뜻 예시 설명 < 작다. (크다)
미만 (초과)a < b a는 b보다 작다. (b는 a보다 크다.)
a는 b 미만이다. (b는 a 초과이다.)> 크다. (작다.)
초과 (미만)a > b a는 b보다 크다. (b는 a보다 작다.)
a는 b 초과이다. (b는 a 미만이다.)<= 작거나 같다. (크거나 같다.)
이하 (이상)a <= b a는 b보다 작거나 같다. (b는 a보다 크거나 같다.)
a는 b 이하이다. (b는 a 이상이다.)>= 크거나 같다. (작거나 같다.)
이상 (이하)a >= b a는 b보다 크거나 같다. (b는 a보다 작거나 같다.)
a는 b 이상이다. (b는 a 이하이다.)== 같다. a == b a와 b가 같다. != 다르다. a != b a와 b가 다르다. '<'나 '>'와 같은 부등호는 우리가 이미 알고 있는 부호와 뜻이 같아요. 하지만 다른 것들은 조금 차이가 있죠? 특히 '같다.'라는 기호는 등호(=)를 하나만 쓰는 것이 아니라 꼭 두 개를 써야 한다는 것!! 기억하세요!! 기억하세요!!
-
이제 진짜 조건문과 관계 연산자에 대해 배웠으니 문제를 풀어볼까요?
문제에서는 양수와 0 그리고 음수를 판별하라고 했어요. 대신 elif와 else를 모두 사용하라고 하죠. 조건문의 첫 번째 조건은 if로 시작하지만 두 번째 조건은 elif가 되겠죠? 그리고 첫 번째 조건과 두 번째 조건이 모두 거짓일 땐 마지막에 오는 else가 실행돼요. 이것만 기억하면 쉽게 풀 수 있는 문제에요.
첫 번째로는 양수를 판별하는 조건을 만들어야 돼요. 양수는? 0보다 큰 숫자를 뜻하죠. 따라서
0 < num 이나 혹은 num > 0 으로 표현할 수 있을거에요.
두 번째 조건은 더 간단해요. 0인지만 판별하면 돼죠. 마찬가지로 0 == num 이나 혹은 num == 0 으로 표현할 수 있어요.
마지막 조건은 생각할 필요도 없어요. 실수계에서는 양수나 0이 아니면 음수이기 때문에 첫 번째 조건과 두 번째 조건이 거짓이면 자동으로 num은 음수가 돼요.
코드로 나타내볼까요?
코드를 실행한 다음 오른쪽 콘솔창에서 숫자를 입력하고 엔터키를 누르면 출력되는 결과를 볼 수 있어요. 참 쉽죠?
'알고리즘 이야기 > 프로그래머스' 카테고리의 다른 글
[PCCE 모의고사 2] 10번 문제 해설 (0) 2022.11.09 [PCCE 모의고사 1] 10번 문제 해설 (0) 2022.11.03 [PCCE 모의고사 1] 1번 문제 해설 (0) 2022.11.02