[SWEA] 10726. 이진수 표현

[SWEA] 10726. 이진수 표현

SW Expert Academy
10726. 이진수 표현




코드

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int tc;
	cin >> tc;

	int n, m;
	for (int t = 1; t <= tc; t++) {
		cin >> n >> m;

		int mask = (1 << n) - 1;
		if ((mask & m) == mask) {
			cout << "#" << t << " " << "ON\n";
		}
		else {
			cout << "#" << t << " " << "OFF\n";
		}
	}
	return 0;
}

잡담

처음엔 숫자 m을 받아서 to_binary 함수로 2진수 문자열로 바꿔준 뒤 뒤에서 부터 n만큼 1과 비교하려 했다.
하지만 왠지 모르게 1만개의 테스트 케이스 중 9996개를 성공하고 4개를 틀리는 기염을 토하고 … 왠지 모르게 배열 크기에서 오류가 생겼을 것 같아서 새로운 방법을 찾기로 했다(물론 배열 크기가 n보다 작을 떄의 예외 처리는 해주긴 했다).

특강 2일차가 비트 연산에 관한 파트였기 때문에, bitmask처럼 길이가 nmask = 1111...을 만들어서 & 비트 연산으로 풀었다.


© 2022. All rights reserved.