일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 컴퓨터비전
- CSS
- 중학1-1
- 정보처리기사필기
- 머신러닝
- C++
- 자바 실습
- pandas
- 컴퓨터구조
- 영어공부
- 파이썬라이브러리
- 텍스트마이닝
- SQL
- 데이터분석
- 자바
- 코딩테스트
- 중학수학
- html/css
- 정수와유리수
- 데이터입출력구현
- 파이썬
- 운영체제
- 혼공머신
- JSP/Servlet
- 정보처리기사실기
- 연습문제
- CNN
- 데이터베이스
- numpy/pandas
- 딥러닝
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
연산자 응용 2 - 관계 · 논리 · 비트 연산자 코딩테스트 문제 본문
이제 아침 프로그래밍 시간이 얼마 남지 않았다. 마지막 문제로 관계 · 논리 · 비트 연산자를 활용한 문제를 풀어보려고 한다.
비슷한 유형의 문제들이 많아서 몇 개로 간추려서 정리해볼 것이다.
관계 연산자 <1137번>
문제 1번
두 정수(a, b)를 입력받아 a와 b가 같으면 0, 같지 않으면 1을 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main(void)
{
int a, b;
scanf_s("%d%d", &a, &b);
printf("%d", a != b);
return 0;
}
문제에서 같으면 0, 같지 않으면 1이 출력되므로 1이 출력되었다. 1번과 2번 관계연산자 문제는 비슷해서 1개만 다시 풀어보았다.
논리 연산자(NOT) <1138번>
문제 2번
1(true, 참) 또는 0(false, 거짓) 이 입력되었을 때 결과를 반대로 출력하는 프로그램을 작성해보자.
0또는 1이 입력된다.
입력된 논리값의 반대로 출력한다.
#include <stdio.h>
int main(void)
{
int a;
scanf_s("%d", &a);
printf("%d", !a);
return 0;
}
1번 문제와 다른 점은 하나의 숫자(참 또는 거짓)가 입력되고 그것과 반대되는 값이 출려된다는 것이다.
여기서는 관계연산자가 아닌 논리연산자를 사용해야 한다.
이 둘의 차이를 꼭 기억하자!
논리 연산자(AND) <1139번>
문제 3번
두 가지의 참(1) 또는 거짓(0)이 입력될 때, 모두 참일 때는 1이, 그렇지 않으면 0이 출력되는 프로그램을 작성해보자.
#include <stdio.h>
int main(void)
{
int a, b;
scanf_s("%d%d", &a, &b);
printf("%d", a && b);
return 0;
}
3번 문제에서는 참일 때는 1, 그렇지 않으면 0이 출력되어야 하므로 and 연산임을 알 수 있다.
&&를 사용하는데 &과 혼동해서는 안된다. &는 뒤에 나오는 비트연산자과 연관이 있다.
비트 연산자(OR) <1144번>
문제 4번
두 수를 입력받아 비트단위로 OR연산한 후 결과를 출력하시오.
#include <stdio.h>
int main(void)
{
int a, b;
scanf_s("%d%d", &a, &b);
printf("%d", a | b);
return 0;
}
3과 5에서 or 연산을 하면 7이 나온다.
비트 연산자(<<) <1147번>
문제 5번
정수 a, x를 입력받아 a의 값을 x만큼 SHIFT(<<) 연산한 후 결과를 출력하시오.
#include <stdio.h>
int main(void)
{
int a, x;
scanf_s("%d%d", &a, &x);
printf("%d", a << x);
return 0;
}
왼쪽 시프트 연산을 했으니 값이 더 커지고, 오른쪽 시프트 연산을 하면 값이 작아진다.
두 개의 연산은 좀 헤깔리기도 하는데, 머리가 어느쪽을 향해 있는지 보면 파악할 수 있다. 왼쪽 시프트 연산은 끝 부분이 왼쪽을 향하고 있고, 오른쪽은 그 반대의 경우이다.
오늘의 세번째 단원 코딩 학습을 마치고
이렇게 해서 오늘 풀려고 했던 3가지 주제별로 코딩 테스트 문제를 풀어보았다. 마지막 주제의 문제가 남아있지만 이건 내일이나 다음에 학습해보려고 한다.
이제 관계 · 논리 · 비트 연산자를 어려워하지 않고 잘 구분할 수 있게 되었다~
'알고리즘 및 자료 관리 > 알고리즘 & 코딩테스트' 카테고리의 다른 글
입출력 응용 - 문자와 문자열 출력 코딩 테스트 문제 (0) | 2024.08.25 |
---|---|
연산자 응용 1 - 공식을 사용하여 적용하는 코딩 테스트 문제 (0) | 2024.08.25 |
연산자 3 - 비트시프트와 비트단위 논리연산 코딩테스트 <코드업> (0) | 2024.08.25 |
연산자 2 - 비교연산과 논리연산 코딩테스트 <코드업> (0) | 2024.08.25 |
연산자 1 - 산술연산 문제 코딩테스트 <코드업> (0) | 2024.08.25 |