inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

백준 3190 뱀 문제 질문

306

bunny

작성한 질문수 19

0

안녕하세요

백준 3190 뱀 문제 풀다가 잘 모르겠어서 질문 남깁니다.

http://boj.kr/9a3979de628244948d1d6fefaa6c0f8b

저는 위와 같이 작성하였습니다.

예제는 모두 통과하였는데 23퍼센트 정도에서 틀렸습니다.

제가 놓친 부분이 있을까요?

C++ 코테 준비 같이 해요!

답변 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;
}

0

bunny

와 무슨 이런 짓을...

더 꼼꼼히 봐야겠어요.

감사합니다.

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