https://school.programmers.co.kr/learn/courses/30/lessons/67256
이번 문제는 2020 카카오 인턴십 문제였습니다.
📝 문제 풀이
⭐️ * ➡️ 10, 0 ➡️ 11, # ➡️ 12로 생각하기
1. 맨 처음 왼손 엄지손가락 위치를 10, 오른손 엄지손가락 위치를 12로 초기화
2. 누를 번호 1, 4, 7 ➡️ 왼손 엄지손가락으로 입력
3. 누를 번호 3, 6, 9 ➡️ 오른손 엄지손가락으로 입력
4. 누를 번호 2, 5, 8, 0 ➡️ 왼손 엄지손가락과의 거리와 오른손 엄지손가락과의 거리 비교
🤹🏻♀️ 거리가 다르다면 누를 번호와 더 가까운 엄지손가락을 사용
💡 거리 계산: | (엄지손가락 위치 - 누를 번호) / 3 | + | (엄지손가락 위치 - 누를 번호) % 3 |
🙌🏻 거리가 같다면 hand에 따라 키패드 누르기
👩🏻💻 C++ 코드
#include <string>
#include <vector>
using namespace std;
string solution(vector<int> numbers, string hand) {
string answer = "";
int lefthand = 10;
int righthand = 12;
for (int number: numbers) {
if (number == 1 || number == 4 || number == 7) {
answer += 'L';
lefthand = number;
}
else if (number == 3 || number == 6 || number == 9) {
answer += 'R';
righthand = number;
}
else {
if (number == 0) number = 11;
int leftDistance = abs((lefthand - number) / 3) + abs((lefthand - number) % 3);
int rightDistance = abs((righthand - number) / 3) + abs((righthand - number) % 3);
if (leftDistance < rightDistance) {
answer += 'L';
lefthand = number;
} else if (leftDistance == rightDistance) {
if (hand == "left") {
answer += 'L';
lefthand = number;
} else {
answer += 'R';
righthand = number;
}
} else {
answer += 'R';
righthand = number;
}
}
}
return answer;
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 순위 검색 C++ (Lv.2) (0) | 2023.05.09 |
---|---|
[프로그래머스] 크레인 인형뽑기 게임 C++ (Lv.1) (0) | 2023.05.01 |
[프로그래머스] 주차 요금 계산 C++ (Lv.2) (0) | 2023.04.30 |
[프로그래머스] 실패율 C++ (Lv.1) (1) | 2023.04.20 |
[프로그래머스] 더 맵게 C++ (Lv.2) (0) | 2023.04.20 |