[문제]
programmers.co.kr/learn/courses/30/lessons/67256
[풀이]
1,4,7을 누를경우 왼손
3,6,9를 누를 경우 오른손
나머지는 현재 왼손, 오른손의 위치를 기준으로 가까운 손으로 누르도록 구현
만약 거리가 같다면 왼손잡이,오른손잡이인지 확인하고 이에 맞게 누르도록
[코드]
#include <string>
#include <vector>
using namespace std;
struct pos{
int x,y;
};
pos left = {3,0};
pos right = {3,2};
string solution(vector<int> numbers, string hand) {
string answer = "";
for(int i=0;i<numbers.size();i++)
{
int num = numbers[i];
if(num == 1 || num == 4 || num == 7)
{
answer += "L";
left = {num/3,0};
}
else if(num == 3 || num == 6 || num == 9)
{
answer += "R";
right = { num/3-1 , 2};
}
else
{
int x = num/3;
int y = 1;
if(num == 0) x = 3;
int ldis = abs(x-left.x) + abs(y-left.y);
int rdis = abs(x-right.x) + abs(y-right.y);
if(rdis < ldis)
{
answer += "R";
right = {x,y};
}
else if(rdis > ldis )
{
answer += "L";
left = {x,y};
}
else
{
if(hand.compare("right") == 0)
{
answer += "R";
right = {x,y};
}
else
{
answer += "L";
left = {x,y};
}
}
}
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 튜플(C++) (0) | 2021.04.27 |
---|---|
[프로그래머스] 수식 최대화(C++) (0) | 2021.04.23 |
[프로그래머스] 소수 찾기 (0) | 2020.11.10 |
[프로그래머스] 큰 수 만들기 (0) | 2020.11.10 |
[프로그래머스]방문 길이 (0) | 2020.10.13 |