백준 3190 뱀 문제 질문
306
bunny
작성한 질문수 19
0
안녕하세요
백준 3190 뱀 문제 풀다가 잘 모르겠어서 질문 남깁니다.
http://boj.kr/9a3979de628244948d1d6fefaa6c0f8b
저는 위와 같이 작성하였습니다.
예제는 모두 통과하였는데 23퍼센트 정도에서 틀렸습니다.
제가 놓친 부분이 있을까요?
답변 1
0
안녕하세요 bunny님 ㅎㅎ
제가 주석달았는데 참고 부탁드립니다.
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int N, K, y, x, L, t, d;
// 자료구조 map이 있기 때문에 이런 변수명은 자제해주세요.
int map[104][104];
int visited[104][104];
int dy[] = { -1,0,1,0 };
int dx[] = { 0,1,0,-1 };
char c;
queue<pair<int, char>> change;
deque<pair<int, int>> snake;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N >> K;
for (int i = 0; i < K; i++)
{
cin >> y >> x;
map[y][x] = 1;
}
cin >> L;
for (int i = 0; i < L; i++)
{
cin >> y >> c;
change.push({ y,c });
}
y = 1;
x = 1;
d = 1;
visited[y][x] = 1;
snake.push_back({ y,x });
while (1)
{
t += 1;
y += dy[d];
x += dx[d];
if (visited[y][x] == 1 || y < 1 || x < 1 || y > N || x > N) break;
//사과를 먹은 것은 왜 표기가 안되죠? map[y][x] = 0이 되어야 하는 것아닌가요?
if (map[y][x] == 1)
{
visited[y][x] = 1;
snake.push_front({ y,x });
}
else
{
visited[y][x] = 1;
snake.push_front({ y,x });
visited[snake.back().first][snake.back().second] = 0;
snake.pop_back();
}
if (change.size() && t == change.front().first)
{
if (change.front().second == 'L') d = (d + 3) % 4;
else d = (d + 1) % 4;
change.pop();
}
}
cout << t << "\n";
return 0;
}
1-E질문입니다!
0
518
2
3-L 틀린 부분 피드백 부탁드립니다.
0
822
2
1-A문제 순열재귀함수 질문입니다.
0
385
1
1-A 일곱난쟁이문제입니다
0
457
1
문제 풀 때 방향성에 대해
0
801
1
맥에서 vs code로 실행 관련 질문입니다
0
523
1
17071번 메모리 초과
0
386
1
1-C질문입니다!
0
421
2
2-B BFS 시간초과질문
0
630
2
1-O 13번 라인
0
442
1
6-J 놀이공원 문제 질문
0
381
1
구현관련 질문
0
484
1
강의 교안
0
319
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
545
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
536
1
1-K
0
473
2
3-G번 질문있습니다.
1
473
3
3-C 실행 시간 질문드립니다.
0
494
1
4-A 문제 풀이 질문있습니다.
0
590
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
435
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
334
1
3-O go 함수 질문 드립니다.
1
447
2
4-A 출력 질문
0
305
1
1주차 1-O 질문드립니다
0
259
1





