Patrick's Devlog

[SWEA/C++] 이진수 표현(10726번) 본문

Study/Algorithms Practice

[SWEA/C++] 이진수 표현(10726번)

Patrick_ 2022. 8. 23. 15:05

1. 개요

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXRSXf_a9qsDFAXS&categoryId=AXRSXf_a9qsDFAXS&categoryType=CODE&problemTitle=10726&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1#none 

 

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;
}