[SWEA] 10726. 이진수 표현
in Study on Algorithm, SAMSUNG DX, SWEA
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
처럼 길이가 n
인 mask = 1111...
을 만들어서 &
비트 연산으로 풀었다.