일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- BFS
- programmers
- 3D RPG
- 프로세스 상태
- effective C++
- two pointer
- level1
- Project
- knapsack Problem
- Zenject
- Silver
- Modern C++
- PrefixSum
- binary search
- Euclidean
- solid 원칙
- Unity
- dirtyflag pattern
- level3
- Flyweight Pattern
- LEVEL2
- stack
- Gold
- trie
- Bronze
- algorithm
- SWEA
- 8-Puzzle
- BOJ
- 프로그래머스
Archives
- Today
- Total
Patrick's Devlog
[SWEA/C++] 이진수 표현(10726번) 본문
1. 개요
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
※ 본 문제는 SW Expert 아카데미의 문제이므로 무단으로 복제 X
1-1. 설명
정수 N, M이 주어질 때 M의 이진수 표현 마지막 N 비트가 모두 1로 켜져있는지 판별하는 프로그램을 작성한다.
1-2. 제한 사항
- 각 테스트 케이스의 첫 줄에는 N,M이 주어짐
- N은 1이상 30이하의 자연수, M은 0 이상 10^8 이하의 정수
2. 구현
2-1. 풀이
비트 연산자를 통해서 풀면 쉽게 풀린다.
2-2. 코드
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
int test_case;
int T, N, M, num, currentBit;
cin>>T;
string result[2] = {"OFF", "ON" };
for(test_case = 1; test_case <= T; ++test_case)
{
cin >> N >> M;
for (int i = 0; i < N; i++) {
int currentNum = (M >> i) % 2;
if (currentNum != 1) {
currentBit = 0;
break;
}
else if (currentNum == 1 && i == N - 1) currentBit = 1;
}
cout << "#" << test_case << " " << result[currentBit] << "\n";
}
return 0;
}
'Algorithm > Algorithms Practice' 카테고리의 다른 글
[BOJ/C++] 수 정렬하기 3(10989번) (0) | 2022.08.31 |
---|---|
[BOJ/C++] 제로(10773번) (0) | 2022.08.31 |
[SWEA/C++] 쉬운 거스름돈(1970번) (3) | 2022.08.22 |
[SWEA/C++] 사탕분배(13736번) (0) | 2022.08.21 |
[SWEA/C++] 파핑파핑 지뢰 찾기(1868번) (0) | 2022.08.10 |