코딩테스트-맵과 방향백터
맵(격자) 그래프 탐색과 방향벡터 (dy, dx)격자(행렬) 형태로 주어지는 맵 문제는 코딩 테스트의 단골 유형이다. 이런 문제를 깔끔하게 푸는 핵심 도구가 방향벡터(dy, dx)다. 상하좌우 4방향 이동을 배열 하나로 처리해, 탐색 코드를 간결하게 만든다. (실제 네이버 코테에도 출제된 유형이다.)1. yx 좌표계맵 문제에서는 좌표를 (y, x) = (행, 열) 순서로 쓰는 것을 권장한다. 2차원 배열 접근이 a[행][열] = a[y][x]이기 때문에, 순서를 맞추면 헷갈릴 일이 줄어든다.2. 방향벡터 정의상하좌우 4방향의 좌표 변화량을 두 배열에 담아 둔다.const int dy[] = {-1, 0, 1, 0}; // 상, 우, 하, 좌const int dx[] = { 0, 1, 0, -1};(dy..
더보기
코딩테스트-중복제거
C++ 벡터에서 중복 요소 제거하는 두 가지 방법{1, 1, 2, 2, 3, 3} 같은 벡터에서 중복을 제거해 1, 2, 3만 남기는 방법을 정리한다. 대표적으로 map을 쓰는 방법과 unique()를 쓰는 방법 두 가지가 있다.방법 1. map 이용하기map은 키(key)가 중복될 수 없다는 성질을 가진다. 이를 이용해 각 값을 키로 등록하면 자연스럽게 중복이 걸러진다. 게다가 map은 키 기준으로 자동 정렬되므로 결과도 오름차순으로 나온다.#include using namespace std;map mp;int main() { vector v{1, 1, 2, 2, 3, 3}; for(int i : v){ if(mp[i]){ // 이미 등록된 값이면 c..
더보기