728x90
1. 문제
programmers.co.kr/learn/courses/30/lessons/67256
2. 풀이
왼/오른손에서 가운데 숫자와의 거리를 구하는 방법이 관건이었던 문제!
공식(수식)을 세워서 풀었어야했다..
이 부분을 어떻게해야할지 몰라서 검색해서 다른 사람들의 방법을 참고하였다.
초기 left, right의 값은 각각 10, 12로 설정해주어야한다!
3.코드
#include <string>
#include <vector>
using namespace std;
/*
1, 4, 7 -> L
3, 6, 9 -> R
2, 5, 8 -> 가까운 손, 만약 거리 같으면 오/왼손잡이 순
*/
string solution(vector<int> numbers, string hand) {
string answer = "";
int size = numbers.size();
int left=10; int right= 12;
int left_dist, right_dist = 0;
for(int i=0; i<size; i++){
if(numbers[i]==1 || numbers[i] == 4 || numbers[i] == 7){
left = numbers[i];
answer += "L";
}
else if(numbers[i]==3 || numbers[i] == 6 || numbers[i] == 9){
right = numbers[i];
answer += "R";
}
else{
if(numbers[i] == 0){
numbers[i] = 11;
}
int tmpl = abs(numbers[i]-left);
int tmpr = abs(numbers[i]-right);
left_dist = (tmpl/3) + (tmpl%3);
right_dist = (tmpr/3) + (tmpr%3);
if(left_dist < right_dist){
left = numbers[i];
answer += "L";
}
else if(right_dist < left_dist){
right = numbers[i];
answer += "R";
}
else if(right_dist == left_dist){
if(hand == "left"){
left = numbers[i];
answer += "L";
}
else{
right = numbers[i];
answer += "R";
}
}
}
}
return answer;
}
728x90
'코딩 테스트' 카테고리의 다른 글
[프로그래머스] 멀쩡한 사각형 (Python) (0) | 2021.04.12 |
---|---|
[프로그래머스] 징검다리 건너기 (Python) (0) | 2021.04.10 |
[프로그래머스] 불량 사용자 (Python) (0) | 2021.04.05 |
[프로그래머스] 순위 검색 (Python) (0) | 2021.03.30 |
[프로그래머스] 쿼드압축 후 개수 세기 (C++) (0) | 2021.03.30 |
댓글