Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

킹솔이

[프로그래머스/C++] 서머코딩/윈터코딩(~2018) 방문길이 본문

Algorithm

[프로그래머스/C++] 서머코딩/윈터코딩(~2018) 방문길이

킹솔이 2020. 2. 19. 12:49

https://programmers.co.kr/learn/courses/30/lessons/49994

 

코딩테스트 연습 - 방문 길이 | 프로그래머스

 

programmers.co.kr

 

#include<iostream>
#include <string>
#include<vector>

using namespace std;

int solution(string dirs) {
	int answer = 0;
	int curx = 0;
	int cury = 0;
	vector<pair<int, int>> vec;
	vec.push_back(make_pair(0, 0));
	
	for (int i = 0; i < dirs.size(); i++) {
		int gox = 0;
		int goy = 0;
		if (dirs[i] == 'U') goy--;
		else if (dirs[i] == 'D') goy++;
		else if (dirs[i] == 'R') gox++;
		else if (dirs[i] == 'L') gox--;
	

		if (curx + gox <= 5 && curx + gox >= -5 && cury + goy <= 5 && cury + goy >= -5) {
			curx += gox;
			cury += goy;
			vec.push_back(make_pair(curx, cury));
			int j;
			int count = 0;
			for (j = 0; j < vec.size() - 1; j++) {
				if ((vec[j].first == curx - gox && vec[j].second == cury - goy&& vec[j+1].first == curx && vec[j+1].second == cury)|| 
					(vec[j+1].first == curx - gox && vec[j+1].second == cury - goy && vec[j].first == curx && vec[j].second == cury)) {
					count++;
				}
			}
			if (count==1) answer++;
		}
	}
	return answer;
}

int main() {
	string dirs="ULURRDLLU";
	cout << solution(dirs);
	return 0;
}