키패드 누르기

108번뇌·2021년 7월 14일
0

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

#include <string>
#include <vector>

using namespace std;

string solution(vector <int> numbers, string hand) {
	string answer = "";
	string Left = "L";
	string Right = "R";
	string samehand = "";

	string arr[4][3] = { { "1","2","3" },{ "4","5","6" },{ "7","8","9" },{ "*","0","#" } };
	int startLeftY(3);
	int startLeftX(0);
	int startRightY(3);
	int startRightX(2);

	if (hand == "right")	samehand = Right;//여분손에대한 파악입니다.
	else samehand = Left;

	int nowNum(0);
	for (int k = 0; k < numbers.size(); k++)
	{
		string snowNum = to_string(numbers[k]);

		for (int i = 0; i < 4; i++)
		{
			for (int j = 0; j < 3; j++)
			{
				if ((arr[i][j] == "1" && arr[i][j] == snowNum) || (arr[i][j] == "4" && arr[i][j] == snowNum) || (arr[i][j] == "7" && arr[i][j] == snowNum))
				{
					answer += Left;
					startLeftY = i;
					startLeftX = j;
					break;
				}
				else if ((arr[i][j] == "3" && arr[i][j] == snowNum) || (arr[i][j] == "6" && arr[i][j] == snowNum) || (arr[i][j] == "9" && arr[i][j] == snowNum))
				{
					answer += Right;
					startRightY = i;
					startRightX = j;
					break;
				}
				else if ((arr[i][j] == "2" && arr[i][j] == snowNum) || (arr[i][j] == "5" && arr[i][j] == snowNum) || (arr[i][j] == "8" && arr[i][j] == snowNum) || (arr[i][j] == "0" && arr[i][j] == snowNum))//나머지인 경우에는 왼쪽과 오른쪽에서 가까운 거리를 찾는다.  2 5 8 0인 경우입니다. 
				{
					int absLeft = abs(i - startLeftY) + abs(j - startLeftX);
					int absRight = abs(i - startRightY) + abs(j - startRightX);

					if (absLeft<absRight)
					{
						answer += Left;
						startLeftY = i;
						startLeftX = j;
					}
					else if (absLeft>absRight)
					{
						answer += Right;
						startRightY = i;
						startRightX = j;
					}
					else
					{
						answer += samehand;
						if (samehand == "L")
						{
							startLeftY = i;
							startLeftX = j;
						}
						else
						{
							startRightY = i;
							startRightX = j;
						}
					}
					break;
				}
			}
		}
	}

	return answer;
}
int main()
{
	vector<int> vTemp = { 1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5 };
	string hand = "right";


	string iTemp = solution(vTemp, hand);












	return 0;

}

이문제 얼핏보고 bfs로 접근할게 아니라 그냥 문제에서 요구한대로 접근해야함.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글