Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- UELOG
- moreeffectiveC++
- 프로그래머스
- 언리얼가비지컬렉터
- C++최적화
- 스마트포인터
- stl
- BFS
- 선택정렬
- 정렬알고리즘
- 자료구조
- UML관련
- 델리게이트
- 강참조
- 정렬
- UE4 커스텀로그
- 람다
- UE_LOG
- 애셋로드
- 알고리즘
- 언리얼엔진구조체
- map
- 데이터애셋
- 람다사용정렬
- 크리티컬섹션
- enumasByue
- C++
- dataasset
- unorder_map
- 약참조
Archives
- Today
- Total
기억을 위한 기록들
[프로그래머스 lv 1 ] - [1차] 비밀지도 본문
https://programmers.co.kr/learn/courses/30/lessons/17681
1. 리팩토링 전 : 첫 성공 풀이로, 풀다보니 두개의 지도를 합친vector와 숫자를 '#'로 변환하는 vector 두개로 나눴었는데, 다 푼다음에 다시 보니 vector 두개있을 필요가 없을 거 같아서 리팩토링
#include <string>
#include <vector>
using namespace std;
vector<string> solution( int n, vector<int> arr1, vector<int> arr2 ) {
vector<string> addedResult;
//두개의 지도 합치기
for( int i = 0; i < arr1.size(); i++ )
{
string num;
for( int j = arr1.size() - 1; j >= 0; --j )
{
//비트연산으로 출력
int result = arr1[i] >> j & 1;
int result2 = arr2[i] >> j & 1;
//비트연산의 결과 합이 2이라면 1
if( result + result2 == 2 )
num += to_string( 1 );
else
num += to_string( result2 + result );
}
addedResult.push_back( num );
}
//합친 지도 그리기
vector<string> result;
for( int i = 0; i < addedResult.size(); i++ )
{
string numValue;
string curNum = addedResult[i];
for( int j = 0; j < curNum.size(); j++ )
{
if( curNum[j] == '1' )
numValue += '#';
else
numValue += ' ';
}
result.push_back( numValue );
}
return result;
}
2. 리팩토링 후
#include <string>
#include <vector>
using namespace std;
vector<string> solution( int n, vector<int> arr1, vector<int> arr2 ) {
vector<string> result;
//두개의 지도 합치기
for( int i = 0; i < arr1.size(); i++ )
{
string value;
for( int j = arr1.size() - 1; j >= 0; --j )
{
//비트연산으로 출력
int result = arr1[i] >> j & 1;
int result2 = arr2[i] >> j & 1;
//비트연산의 결과 합이 1이상이면 #
value += result + result2 >= 1 ? '#' : ' ';
}
result.push_back( value );
}
return result;
}
'Coding Test - cpp > String' 카테고리의 다른 글
[프로그래머스 lv 1 ] - 4주차 직업군 추천 (0) | 2021.10.01 |
---|---|
[프로그래머스 lv 2 ] - 영어 끝말잇기 (0) | 2021.09.25 |
[프로그래머스 lv 2 ] - 오픈채팅방 (0) | 2021.09.08 |
[HackerRank/C++] Repeated String (0) | 2021.07.25 |
[백준 11721: 열 개씩 끊어 출력하기] - C++ (0) | 2021.03.25 |