Notice
Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로그래머스
- flutter-layout
- dfs
- 편하다요
- 나도 코딩 잘할래!!!!!!!!!!!
- 댓글이 하나도 없오...ㅠㅠ
- flutter_secure_storage
- FutureBuilder
- bloc
- Null Safety
- Flutter2.8
- 주니어개발자
- flutter
- 크레인 인형뽑기
- 이직
- hero animation
- 다트&플러터
- network
- 누가 보기는 하는걸까...ㅠㅠ
- open weather api
- 포?코DX
- TODO
- 플러터
- 다트 책
- 쒸익!!!!!!!!!
- 코딩 잘하고 싶어!!
- flutter secure storage
- 주변에는 능력자 뿐이야!!
- 플러터 책
- flutter_local_notification
Archives
- Today
- Total
오늘하루도 우힣ㅎ
비밀지도 - c++ (2018 2018 KAKAO BLIND RECRUITMENT) 본문
해당 문제는 2018 카카오 블라인드 채용 코딩테스트에 있었던 문제이다. 간략하게 설명하자면 두개의 지도가 주어지고 두개의 지도를 겹쳐 공백인 곳과 공백이 아닌곳을 string 어레이(벡터)로 표현을 하는 것이다.
자세한 문제의 설명은 아래에 존재한다.
https://programmers.co.kr/learn/courses/30/lessons/17681
이문제는 이진법을 통해 1은 # 0은 공백으로 표현하기를 바라는 문제이다. 따라서 이문제는 이진법을 이용하여 풀어야 한다. 이진법을 사용하여 풀때 유용한 비트 연산자를 생각해내니 이문제는 쉽게 풀리는 문제였다.
#include <string>
#include <vector>
#include <iostream>
#include <bitset>
#include <cmath>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
for(int i=0;i<n;i++){
//이진수에서 가장 앞비트 부터 확인을 시키기 위하여 standard를 n-1만큼 제곱시켜 주기
int standard = pow(2,n-1);
//문제에서 이진수일때 두곳중 하나라도 1이면 #으로 표시되길 원하기 때문에 |연산자 사용
int temp = arr1[i]|arr2[i];
string answerLine="";
for(int j=0;j<n;j++){
//standard의 경우 이진수에서 각각의 비트들을 확인하기 위함이다. 해당 부분이 1이면 #을 추가할수 있게 해준다.
if(temp&standard==1){
answerLine+="#";
}
if(temp&standard==0){
answerLine+=" ";
}
//현재 standard에서 msb를 오른쪽으로 한칸 옮기기
standard>>=1;
}
answer.push_back(answerLine);
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
네트워크 - c++ (DFS/BFS) (0) | 2020.06.17 |
---|---|
Summer/Winter Coding(~2018)기지국 설치 - c++ (0) | 2020.05.21 |
카카오프렌즈 컬러링북 - c++ (2017 카카오코드 예선) (0) | 2020.05.02 |
크레인 인형뽑기 게임 - c++ (2019 카카오 개발자 겨울 인턴십) (0) | 2020.04.12 |
Comments