[백준 15685] 드래곤 커브 (삼성 기출)


문제

백준 삼성 SW 역량테스트 기출 문제

코드 GitHub

/****** BAEKJOON 15685 *****/
/***** SAMSUNG SW TEST *****/
/** Solved Date 2021-04-16 */

#include <iostream>
#include <vector>

using namespace std;

const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, -1, 0, 1};

int main() {
    int N;
    cin >> N;

    bool map[101][101] = {false, };

    for(int i = 0; i < N; i++) {
        int x, y, d, g;

        cin >> x >> y >> d >> g;

        vector<int> path;
        path.push_back(d);
        map[x][y] = true;

        for(int j = 0; j < g; j++) {
            int clen = path.size();
            for(int k = 0; k < clen; k++) {
                path.push_back((path[clen - 1 - k] + 1) % 4);
            }
        }

        int n = path.size();
        for(int j = 0; j < n; j++) {
            int dir = path[j];
            
            x += dx[dir];
            y += dy[dir];
            map[x][y] = true;
        }
    }

    // Find Rect
    int cnt = 0;
    for(int i = 0; i < 100; i++) {
        for(int j = 0; j < 100; j++) {
            if(map[i][j] && map[i][j+1] && map[i+1][j] && map[i+1][j+1]) {
                cnt++;
            }
        }
    }
    cout << cnt;
}

피드백

  • vector
    #include <vector>
    vector<int> v;
    v.push_back(1);
    v.size();
    
  • 좌표 평면의 방향 체크하기

  • 문제 잘 읽기
    드래곤 커브로 둘러싸인 사각형 X
    모든 꼭지점이 드래곤 커브에 포함된 사각형 O
    
  • 귀찮아도 적으면서(그리면서) 할 것

Reference

댓글남기기