15685 드래곤 커브
본문 바로가기
알고리즘 모음집/New 알고리즘

15685 드래곤 커브

by KyeongMin 2020. 7. 25.
728x90
반응형

https://www.acmicpc.net/problem/15685

 

15685번: 드래곤 커브

첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커�

www.acmicpc.net

#include<stdio.h>
#include<iostream>
#include<string>
#include<string.h>
#include<vector>
using namespace std;
#define MAP_SIZE 101
int N;
int map[MAP_SIZE+4][MAP_SIZE+4];
int dy[] = { 0,-1,0,1 };
int dx[] = { 1,0,-1,0 };
struct Data {
	int y, x, dir, age;
};
void print(string name, int idx, vector<int> &dragonDir) {
	cout << name<<endl;
	for (int i = 0; i < dragonDir.size(); i++) {
		cout << dragonDir[i] << " ";
	}
	cout << endl;

}
int main(void) {
	scanf("%d", &N);//드래곤 커브 개수
	for (int i = 0; i < N; i++) {
		int y, x, dir, age;
		scanf("%d %d %d %d", &x, &y, &dir, &age);//y축, x축, 방향 , 세대
		vector<int>dragonDir;//드래곤 경로 저장
		dragonDir.push_back(dir);
		for (int age_Idx = 0; age_Idx < age; age_Idx++) {// 세대 만큼 돌리기
			for (int k = dragonDir.size() - 1; k >= 0; k--) {//드래곤 경로 끝에서부터 시계방향 90 회전
				dragonDir.push_back((dragonDir[k]+1) % 4);
			}
			//print("드래곤 경로", age_Idx + 1,dragonDir);
		}
		//드래곤 경로 배열에 찍기
		map[y][x] = 1;
		for (int k = 0; k < dragonDir.size(); k++) {
			map[y + dy[dragonDir[k]]][x + dx[dragonDir[k]]] = 1;
			y += dy[dragonDir[k]]; x += dx[dragonDir[k]];
		}
	}
	//1x1 정사각형 찾기
	int ret = 0;//정사각형 개수 저장
	for (int i = 0; i < 100; i++) {
		for (int j = 0; j < 100; j++) {
			if (map[i][j] == 1 && map[i][j + 1] == 1
				&& map[i + 1][j] == 1 && map[i + 1][j + 1] == 1) {
				ret++;
			}
		}
	}
	cout << ret << endl;// 정사각형 개수 출력
	return 0;
}

이문제는 경로를 한번에 다저장을 하고 저장한 경로를 따로 배열에 저장하는 포인트만 알면 쉬운 문제입니다.

물론 드래곤 커브의 경로를 어떤식으로 저장하는지도 알아야합니다. 

그리고 여기서 다들 틀렸을수 있는데 x축과 y축을 잘 생각해서 써야하는것입니다.

 

물론 문제를 잘읽으면 되지만 분명 문제를 앞으로 풀다가 보면 분명 예제는 다 맞는데 왜 문제가 틀리다고 하지 하면

거의 y ,x를 반대로 한경우가 있으니 항상 주의해주세요 

 

저는 좀 바보 같은 실수를 했습니다. 마지막에 1x1 정사각형 판별할때 범위를 좀 다 검사가 안되게 되어있더라구요 

그런 실수 여러분들은 하지 마세요 !!!!다같이 알고리즘 격파해 봅시다. 

728x90
반응형

'알고리즘 모음집 > New 알고리즘' 카테고리의 다른 글

15686 치킨배달  (0) 2020.07.27
프로그래머스 다리를 지나는 트럭  (0) 2020.07.25
프로그래머스 카펫  (0) 2020.07.23
15683 감시  (0) 2020.07.23
프로그래머스 숫자 야구  (0) 2020.07.22

댓글