티스토리 뷰
https://www.acmicpc.net/problem/3190
#include<iostream>
#include<vector>
#include<queue>
#include<utility>
#include<map>
using namespace std;
vector<vector<int>> sMap;
int direct[4][2] = { {0,1},{1,0},{0,-1},{-1,0} }; //동, 남, 서, 북 ***
int N, K, L, result = 0; //맵크기, 사과갯수, 명령갯수, 결과
int main(void) {
//N*N map을 모두 0으로 초기화
cin >> N;
for (int i = 0; i < N; i++) {
vector<int> temp;
for (int j = 0; j < N; j++)
temp.push_back(0);
sMap.push_back(temp);
}
//사과의 위치 초기화 (map상에 4로 초기화 사과의 4 ㅋㅋㅋㅋ)
cin >> K;
for (int i = 0; i < K; i++) {
int x, y;
cin >> x >> y;
sMap[x - 1][y - 1] = 4;
}
//뱀의 초기 상태 0, 0 방향은 동쪽 = 0
queue<pair<int, int>> snack;
snack.push(make_pair(0, 0));
sMap[snack.back().first][snack.back().second] = 1; //맵에 표시
int moveD = 0; //방향
//명령 입력 = 맵에 입력해서 초마다 방향전환 명령을 찾는 방식
map<int, char> Order;
cin >> L;
for (int i = 0; i < L; i++) {
int sec;
char dir;
cin >> sec >> dir;
Order[sec] = dir;
}
//solution~~~
while (1) {
result++;
int x = snack.back().first + direct[moveD][0];
int y = snack.back().second + direct[moveD][1];
//맵 안에서 움직이는지, 몸과 부딪히지 않았는지 --> 종료조건!!
if (0 <= x && x < N && 0 <= y && y < N && sMap[x][y] != 1) {
//일단 이동
snack.push(make_pair(x, y));
//사과가 없으면 길이 줄이기
if (sMap[x][y] != 4) {
sMap[snack.front().first][snack.front().second] = 0; //맵에서 뱀 꼬리 지우고
snack.pop(); //꼬리 댕기고~
}
//이동한 위치에 표시
sMap[x][y] = 1;
}
else {
cout << result << endl;
return 0;
}
//방향 회전
if (Order.find(result) != Order.end()) {
if (Order[result] == 'D')
moveD = (moveD + 1) % 4;
if (Order[result] == 'L')
moveD = (moveD + 3) % 4;
}
}
}
'Algorithm > 유형별 : simulation' 카테고리의 다른 글
[C++] [Simulation] 백준 1018번 : 체스판 다시 칠하기 (0) | 2019.11.14 |
---|---|
[C++] [Simulation] 백준 14499번 : 주사위 굴리기 (0) | 2019.11.14 |
[C++] [Simulation] 백준 14503번 : 로봇 청소기 (0) | 2019.11.14 |
[C++] [Simulation] 백준 1966번 : 프린터 큐 (0) | 2019.11.14 |
[C++] [Simulation] 백준 1094번 : 막대기 (0) | 2019.11.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 추상화
- controller
- Delete
- INSERT
- 객체지향
- Oracle
- 객체
- .
- Scott/Tiger
- view
- 상속
- ojdbc6.jar
- jdbc
- 캡슐화
- MVC
- 다형성
- JdbcTemplate
- model
- select
- java 환경설정
- OOP
- Update
- JDBC 프로그램 작성단계
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함