Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 2020 KAKAO BLIND
- 구현
- Web
- 백트래킹
- 2020 카카오 인턴십
- 프로그래머스
- 월간 코드 챌린지
- next_permutation
- 스택/큐
- pass
- 부스트코스
- DFS
- Level 3
- DP
- level 1
- Level 4
- Level 2
- BFS
- Gold 4
- c++
- 브루트포스
- 삼성 SW 역량 테스트
- 그리디
- 백준
- 시뮬레이션
- SWEA
- 코드리뷰
- 코드 리뷰
- 2019 KAKAO BLIND
- Gold 5
Archives
- Today
- Total
Min:D's Devlog
[프로그래머스][2020 카카오 인턴십][C++] 키패드 누르기 본문
문제
프로그래머스 2020 카카오 인턴십 - 키패드 누르기 (Level 1)
문제 풀이
접근 방식
각 번호를 누른 손이 왼손인지 오른손인지 판단하는 문제이다.
이 문제는 주어진대로 단순 구현만 하면 되는 간단한 문제였다.
우선, 처음 시작이 *과 #에서 시작하기 때문에 처음 시작은 각각 10, 12로 설정해주었다.
(*은 10, 0은 11, #은 12로 치환해주었다.)
그 후, 각 번호가 누를 손이 무엇인지 판단하고, 그 손의 위치를 해당 번호로 옮겨주며 문제를 해결하였다.
번호가 1, 4, 7인 경우에는 왼손, 3, 6, 9인 경우에는 오른손으로 판단하도록 조건문을 만들어주었고,
그 외의 경우에는 그 번호와 현재 손의 위치와의 거리를 구하여 더 가까운 손으로 누르도록 하였다.
오른손과의 거리와 왼손과의 거리가 같은 경우에는 왼손잡이인지 오른손잡이인지를 확인하여 손을 결정해주었다.
풀이 코드 - C++
#include <string>
#include <vector>
using namespace std;
string solution(vector<int> numbers, string hand) {
int len = numbers.size();
int left = 10;
int right = 12;
string answer = "";
for(int i = 0; i < len; i++) {
if(numbers[i] == 1 || numbers[i] == 4 || numbers[i] == 7) {
answer += "L";
left = numbers[i];
} else if(numbers[i] == 3 || numbers[i] == 6 || numbers[i] == 9) {
answer += "R";
right = numbers[i];
} else {
if(numbers[i] == 0)
numbers[i] = 11;
int left_distance = abs((left - 1)/3 - (numbers[i] - 1)/3)
+ abs((left - 1)%3 - (numbers[i] - 1)%3);
int right_distance = abs((right - 1)/3 - (numbers[i] - 1)/3)
+ abs((right - 1)%3 - (numbers[i] - 1)%3);
if(left_distance > right_distance) {
answer += "R";
right = numbers[i];
} else if(left_distance < right_distance) {
answer += "L";
left = numbers[i];
} else {
if(hand == "right") {
answer += "R";
right = numbers[i];
} else {
answer += "L";
left = numbers[i];
}
}
}
}
return answer;
}
실행 결과
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][2020 KAKAO BLIND][C++] 기둥과 보 설치 (0) | 2020.09.18 |
---|---|
[프로그래머스][2020 KAKAO BLIND][C++] 자물쇠와 열쇠 (0) | 2020.09.17 |
[프로그래머스][2019 KAKAO BLIND][C++] 무지의 먹방 라이브 (0) | 2020.09.15 |
[프로그래머스][2019 KAKAO BLIND][C++] 후보키 (0) | 2020.09.14 |
[프로그래머스][2019 KAKAO BLIND][C++] 실패율 (0) | 2020.09.13 |
Comments