저번 문제에서 관계 연산자에 대해서 배웠는데요, 이번 문제에서는 또 다른 연산자인 논리 연산자에 대해서 알려드리도록 하겠습니다. 논리 연산자는 논리곱(And), 논리합(Or), 그리고 부정(Not) 이렇게 세 가지로 이루어져 있는데요, 바로 배워보도록 하죠!
백준으로 배우는 C 언어 09. 곱셈
저번 문제에서 나눗셈의 나머지를 구하는 방법에 대해서 설명했었는데요, 학교에서도 초등학교 때 말고는 나머지를 쓸 일이 거의 없었던 것처럼 나머지를 구해서 어디에 사용할지 모르겠는 분들이 있을 겁니다...
torotoblog.tistory.com
백준으로 배우는 C 언어 10. 두 수 비교하기
백준의 단계별 풀어보기 1단계를 마치고 두 번째 단계입니다! 입출력과 사칙연산에서 프로그래밍에 대해 간단하게 맛을 봤으니 이제는 본격적으로 깊게 파고 들어가 봅시다! 프로그래밍을 할 때 제일 많이 사용되..
torotoblog.tistory.com
이번 문제는 윤년(#2753)입니다. 입력받은 값을 윤년인지 아닌지 확인한 후 윤년이면 1, 아니면 0을 출력하는 문제인데요, 윤년은 100의 배수가 아닌 4의 배수 또는 400의 배수인 연도입니다. 조건들이 좀 많죠. 그럼 이런 경우에는 어떻게 조건식을 세워야 할까요?
#include <stdio.h>
int main(void) {
int a;
scanf("%d", &a);
if((a % 4 == 0 && a % 100 != 0) || a % 400 == 0)
printf("1\n");
else
printf("0\n");
return 0;
}
뭔가 복잡해 보이네요... 지금까지 배운 내용들이 거의 다 들어가 있습니다. % 부터 시작해서 등호, 이번에 배우게 될 논리곱(&&)과 논리합(||)도 포함돼있네요. 자세하게 살펴봅시다.
a % 4 == 0 && a % 100 != 0
일단은 첫 괄호 속을 살펴보겠습니다. 윤년의 첫 번째 정의는 4의 배수(a % 4 == 0)이지만 100의 배수는 아닌(a % 100 != 0) 연도입니다. 저번 문제에서 배웠었죠? == 는 양쪽 값이 서로 같은 경우 참을 반환하고 != 는 양쪽 값이 서로 다른 경우 참을 반환합니다. 자 이제 배수인지 아닌지를 확인해줄 조건식을 만들었으니 두 조건이 모두 만족될 때에만 참을 반환하도록 해야 합니다. 이럴 때 논리곱 &&을 사용하는데요, 논리곱은 양쪽 값이 모두 참일 때 참을 반환합니다.
(a % 4 == 0 && a % 100 != 0) || a % 400 == 0
윤년인지 확인하기 위한 세 번째 조건은 400의 배수인데요, 이번에는 논리곱이 아닌 논리합 ||을 사용해야 합니다. 4의 배수이지만 100의 배수가 아닐 때 또는 400의 배수일 때라고 했기 때문이죠. 즉 앞 조건이나 400의 배수 둘 중 하나만 참 이어도 윤년이라는 뜻입니다. 논리합의 기호가 조금 헷갈리실 분들도 있을 것 같은데요, 알파벳 L이 아니라 Shift + \(백슬래시)를 누르면 나오는 |입니다.
이제 테스틀 해 볼까요? 빌드를 한 뒤 다양한 연도들을 입력해 봅시다. 윤년이면 1, 아니면 0을 출력하네요.
제출을 합시다! 언어를 C로 선택한 뒤 제출 버튼을 클릭하시면 됩니다.
성공이네요!
백준으로 배우는 C 언어 12. 상근날드
저번 문제들에서 관계 연산자와 논리 연산자들에 대해서 배웠는데요, 이번 문제에서는 이 두 연산자들을 같이 활용해보도록 하죠. 백준으로 배우는 C 언어 10. 두 수 비교하기 백준의 단계별 풀어보기 1단계를 마..
torotoblog.tistory.com
'프로그래밍 > 백준' 카테고리의 다른 글
백준으로 배우는 C 언어 13. 세 수 (1) | 2020.03.12 |
---|---|
백준으로 배우는 C 언어 12. 상근날드 (1) | 2020.03.11 |
백준으로 배우는 C 언어 10. 두 수 비교하기 (1) | 2020.03.10 |
백준으로 배우는 C 언어 09. 곱셈 (4) | 2020.03.09 |
백준으로 배우는 C 언어 08. 사칙연산 (0) | 2020.03.09 |