문제 링크:
카카오 신입 공채 1차 코딩 테스트 문제 해설
‘블라인드’ 전형으로 실시되어 시작부터 엄청난 화제를 몰고 온 카카오 개발 신입 공채. 그 첫 번째 관문인 1차 코딩 테스트가 지난 9월 16일(토) 오후 2시부터 7시까지 장장 5시간 동안 온라인으로 치러졌습니다. 지원자들의 개발 능력을 잘 검증하기 위해 출제 위원들이 한 땀 한 땀 독창적이고 다양한 문제들을 만들어 냈고 문제에 이상은 없는지, 테스트케이스는 정확한지 풀어보고 또 풀어보며 […]
tech.kakao.com
입력1:
5
9 20 28 18 11
30 1 21 17 28
입력2:
6
46 33 33 22 31 50
27 56 19 14 14 10
출력1:
#####
# # #
### #
# ##
#####
출력2:
######
### #
## ##
####
#####
### #
코드1:
#include <iostream>
#include <string>
using namespace std;
int n;
int arr1[16], arr2[16];
bool map1[16][16], map2[16][16];
void dec_to_bin(int arr[], bool map[][16]) {
for (int i = 0; i < n; ++i) {
int j = n - 1;
for (int b = arr[i]; b; b = b >> 1) {
map[i][j--] = b % 2;
}
}
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n;
for (int i = 0; i < n; ++i)
cin >> arr1[i];
for (int i = 0; i < n; ++i)
cin >> arr2[i];
dec_to_bin(arr1, map1);
dec_to_bin(arr2, map2);
string ans;
for (int i = 0; i < n; ++i) {
ans.clear();
for (int j = 0; j < n; ++j) {
ans += (map1[i][j] || map2[i][j]) ? '#' : ' ';
}
cout << ans << '\n';
}
return 0;
}
비트연산을 물어보는 문제라고 한다.
이진법으로 전환할 필요가 없었다...
코드2:
#include <iostream>
#include <string>
using namespace std;
int n;
int arr1[16], arr2[16];
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n;
for (int i = 0; i < n; ++i)
cin >> arr1[i];
for (int i = 0; i < n; ++i)
cin >> arr2[i];
string ans;
for (int i = 0; i < n; ++i) {
ans.clear();
int res = arr1[i] | arr2[i];
for (int j = 1 << n - 1; j; j = j >> 1) {
ans += (res & j) ? '#' : ' ';
}
cout << ans << '\n';
}
return 0;
}