티스토리 뷰
반응형
프로도의 비상금 위치를 알기 위해서...
비밀지도의 암호를 푸는 문제
문제의 조건
1. 정사각형 지도의 한 변의 길이 n,
지도 1의 암호 배열 arr1,
지도 2의 암호 배열 arr2가 주어짐
2. 각 지도 배열에는 n개의 정수가 들어있는데
암호화된 숫자임
저걸 2진수로 바꿔야 진짜 지도 그림을 알 수 있음
arr1[i]의 원소 하나를 2진수로 바꾸면 00101과 같은 숫자를 얻을 수 있는데
0은 빈 공간(" ")이고 1은 벽("#")이다.
3. 지도 2개를 합쳐야 진짜 보물지도를 얻을 수 있는데
두개를 합쳤을 때 하나라도 1이면 벽("#")이고
둘 다 0이면 빈 공간(" ")이다.
4. 비밀지도를 해독해서 " # #" 등과 같은 문자열 형식으로 배열에 저장한 후 리턴
#include <string>
#include <vector>
#include <stack>
using namespace std;
stack<int> GetBinary(int n, int size)
{
stack<int> result;
while (0 < n)
{
result.push(n % 2);
n /= 2;
}
//만약 00001같은 경우에는 1만 push하고 멈추기 때문에 실제 size보다 모자란만큼 0을 채워줌
while (size > result.size())
result.push(0);
return result;
}
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
for (int i = 0; arr1.size() > i; i++)
{
stack<int> st1 = GetBinary(arr1[i], n);
stack<int> st2 = GetBinary(arr2[i], n);
string solve = "";
while (!st1.empty())
{
int n1 = st1.top();
int n2 = st2.top();
if (1 == n1 || 1 == n2)
solve += "#";
else if (0 == n1 && 0 == n2)
solve += " ";
st1.pop();
st2.pop();
}
answer.emplace_back(solve);
}
return answer;
}
처음에 이상하게 자꾸 10초 이상 걸린다며 스톱되었는데
알고보니 2진수로 바꾸는 함수를 잘못 작성해서 무한루프가 돌고 있었다...ㅎ
앞으로 조심하장...
반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
[C++] 프로그래머스 카카오프렌즈 컬러링북 풀이 (BFS) (0) | 2021.10.09 |
---|---|
[C++] 프로그래머스 124 나라의 숫자 풀이 (0) | 2021.10.08 |
[C++] 프로그래머스 부족한 금액 계산하기 풀이 (0) | 2021.10.06 |
[C++] 프로그래머스 상호 평가 풀이 (0) | 2021.10.05 |
[C++] 프로그래머스 직업군 추천하기 풀이 (0) | 2021.10.03 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 컴퓨터
- greedy
- 그리디
- 애플
- 다이나믹프로그래밍
- 깊이우선탐색
- 하드웨어
- 문제풀이
- dp
- 컴퓨터공부
- c++
- 컴퓨터사이언스
- 너비우선탐색
- 프로그래밍
- 캐나다생활
- DFS
- 알고리즘
- 기초
- 백준
- 스위프트플레이그라운드
- 프로그래머스
- C언어기초
- 해커랭크
- BFS
- 영어공부
- 아이패드
- 코딩공부
- 캐나다
- c언어
- hackerrank
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함