[BOJ] 16234 인구 이동
·
Algorithm/Baekjoon
문제 바로가기 서론 BFS를 사용해서 전체적인 구현을 하는 시뮬레이션 문제이다. 처음 4번의 실패가 있었지만, 조금 생각만 달리한다면 풀 수 있는 문제 였다. 풀이 시뮬레이션 문제 특성상 문제에서 주어진 조건만 충족하면 문제는 해결된다. N x N 크기의 땅이 있고, 각 나라는 1 x 1 크기로 나누어져 있다. 각 땅에는 n 명이 살고 있으며, 이중 배열로 표현 되어있다. void init() { cin >> N >> L >> R; for (int i = 1; i map[i][j]; visit[i][j] = 0; } } } int map[51][51] 이중 배열을 만들어서 각 나라의 인구를 적어주었고, int visit[51][51] 배열을 만들어 BFS를 위한 접근 기록도 관리하여 주었다. 문제의 조건..
[BOJ] 20055 컨베이어 벨트 위의 로봇
·
Algorithm/Baekjoon
[BOJ] 20055 컨베이어 벨트 위의 로봇 오랜만에 하는 알고리즘 문제 풀이이다. 문제바로가기 #### 풀이 시뮬레이션 문제이다. 벨트에 올라가는 로봇들을 순서대로 조절해야 했기에 나는 vector 와 queue를 사용했다. 시뮬레이션 문제는 문제를 잘 읽고 순서대로만 구현하면 된다. 0. 기본 구조 queue robot; vector belt; vector empt; `robot`은 순서대로 올라가는 로봇의 idx를 관리해주는 `queue` 이다. belt는 벨트의 내구도를 관리한다. empt는 벨트가 비었는지를 관리한다. (벡터는 인덱스 1부터 진행했다.) 1. 벨트가 회전한다. void rotate() { int f; tmp = *(belt.end() - 1); belt.pop_back(); b..
[더블릿] - CSKYLINE
·
Algorithm/ETC
문제 풀이 자료구조에 대한 지식만 있다면 아주 간단하게 풀 수 있는 문제였다. 하지만, 처음엔 입력크기를 생각하지 못해서, 2차원 배열을 만들어 직접 그려가며 문제를 해결하는 바람에 시간초과가 발생했다. 점의 총 갯수가 500,000개가 되고 길이가 1,000,000이 되기에 1초란 시간은 매우 짧았다. 생각을 전환하여 나보다 낮은 층수가 나오기 전까지는 같은 건물 이라는 해답을 찾았다. 이를 해결하기 위해 stack을 생각했다. vector와 stack은 같은 동작을 하기에 평소 자주 사용하는 vector를 사용했다. 점의 좌표 중 y값을 stack에 담으며 top의 값과 비교하여 top이 클 경우 pop()연산과 함께 건물의 수를 카운트 한다. 반대로 top이 작을 경우에는 stack에 담아주며 다음..