코드 복사/붙여넣기 하는 당신이 아름답습니다.

3190 : 뱀

풀이

매번 늦어도 이해할게
누굴 만났니 먼저 묻지 않을게
고집스런 내 사랑 너의 말은
변명이라도 믿고 싶을테니
눈 비비는 척 눈물 닦아내고
다음 약속도 잡을 이유 만들지
네 마음보다 한숨과 친해져도
널 보기위해 난 사니까

수 없이 어긋난대도 기다릴게
아무리 가슴 아파도 웃어볼게
떠나선 안 돼 서둘러 져버리지 마
날 밀어내도 깊어지는 이 사랑을 봐
내 입을 막아도 세상이 다 아는데
왜 너만 몰라 왜
널 지킬 남자를 몰라

코드

#include <stdio.h>
#include <list>
#define fst first
#define snd second
using namespace std;

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

int n, k, l, x, y, d, cnt, a[111][111];
list<pair<int, int> > body, turn;

int main() {
	scanf("%d %d", &n, &k);
	for (int i = 0, x, y; i < k; i++) {
		scanf("%d %d", &x, &y), a[x][y] = 1;
	}
	scanf("%d", &l);
	for (int i = 0; i < l; i++) {
		int x; char c;
		scanf("%d %c", &x, &c);
		turn.push_back({ x, c=='L' ? 3 : 1 });
	}

	cnt = -1, x = y = 1;
	while (1) {
		if (x < 1 || y < 1 || n < x || n < y || a[x][y] == 2) {
			return ~printf("%d", cnt + 1);
		}
		if (!a[x][y] && !body.empty()) {
			a[body.front().fst][body.front().snd] = 0;
			body.pop_front();
		}
		cnt++, a[x][y] = 2;
		if (!turn.empty() && cnt == turn.front().fst) {
			d = (d + turn.front().snd) % 4;
			turn.pop_front();
		}
		body.push_back({ x,y });
		x = x + dx[d], y = y + dy[d];
	}

	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2017-11-17 16:43

Read more posts by this author