일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AWS 모니터링 및 분석 서비스
- 인스턴스 연결
- Organozations
- Trusted Advisor
- The virtual machine was unable to remove all stack frames running old code from the call stack
- aws#키페어
- Cloudtrail
- 코딩테스트
- list map 차이
- 프리티어
- 보안그룹
- 숫자 문자열과 영단어
- AWS 기초자격증
- cloudWatch
- The Network Adapter could not establish the connection
- sql developer
- 인스턴스 생성
- aws#aws기초자격증#EBS#S3#EFS
- 이클립스 에러
- timed out
- EC2
- 완주하지 못한 선수
- aws#멘땅의헤딩#
- Auraro
- gitalb
- aws
- 신규 아이디 추천
- rds
- oracle
- 인바운드 규칙
- Today
- Total
시작하기, 뭐든
프로그래머스 - 2020 카카오 인턴십 키패드 누르기 해설 및 답안 정리 본문
시작하기, 뭐든 - 기록 18일차
오늘은 코딩뿌시기라는 제목을 쓰지 못했다.
말그대로 뿌시지 못했다.
오늘 나에게 시련을 맛보게 해준 레벨1 키패드 누르기.
레벨1에서 벌써 이런 좌절을 맛볼줄이야..ㅠㅠ
문제 조건은 이러했다.
1. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다.
2. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다.
3. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다.
4. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다.
4-1. 만약 두 엄지손가락의 거리가 같다면, 오른손잡이는 오른손 엄지손가락, 왼손잡이는 왼손 엄지손가락을 사용합니다.
엄청난 삽질을 하다가, 해답을 찾아서 공부하자는 마음으로 답안을 찾기 시작했다.
그치만 답안을 봐도 이해가 한번에 되지 않아 여러개를 찾아봤다.
그중 가장 깔끔한 답안과 자세한 해설을 공유해두려고 한다.
먼저, 가장 깔금한 답안이다.(많은 사람들이 링크를 걸어둔거 보면, 나만의 생각은 아닌거 같다.)
https://1-7171771.tistory.com/98
이 문제의 Key Point는 숫자판을 좌표로 생각하고, 좌표간의 거리를 구하는 식으로 접근해야되는 것이었다.
그에 대해 자세한 설명을 해준 포스팅도 공유해둔다.
https://zzang9ha.tistory.com/292
위 포스팅에서 자세히 설명해줬지만, 조금만 더 풀어서 설명해보기로 했다.
(난 저 설명을 읽고도 이해하는데 한참이 걸려서...)
1. 키패드를 좌표로
해당 표는 키패드를 좌표로 표현해둔 것이다.
이 문제는 키패드를 좌표로 생각한 다음, 이동거리를 따져야한다. 예시를 통해 이해해보자!
예제 ) "5"번을 눌러야할 때 왼손이 "1"번에, 오른손이 "#"에 있다고 생각해보자.
왼손 1번은 "1"번 X좌표 0, Y좌표 0에 있다. 오른손은 "#" X좌표 3, Y좌표 2에 있다.
거리를 구해야하니 숫자 크기보단 움직이는 거리가 중요하다. 즉 마이너스는 의미없기 때문에 절대값으로 생각해야한다.
"5번" X좌표에서 왼손이 있는 "1"번 X좌표 거리 = |1-0|
"5번" Y좌표에서 왼손이 있는 "1"번 Y좌표 거리 = |1-0|
절대값으로 생각하면 1+1 = 2 즉 2칸을 움직여야 한다.
"5번" X좌표에서 왼손이 있는 "#"번 X좌표 거리 = |1-3|
"5번" Y좌표에서 왼손이 있는 "#"번 Y좌표 거리 = |1-2|
절대값으로 생각하면 2 + 1 = 3 즉 3칸을 움직여야 한다.
그럼 이때 5번은 왼손이 눌러야되는 식이다.
2. 좌표 규칙
좌표를 이해했다면, 이제 좌표구하는 규칙을 이해해야 한다.
*, 0, #은 각각 순번대로 숫자로 바꿔줬다.
[좌표 규칙]
X좌표 : (키패드-1) / 3
Y좌표 : (키패드-1) % 3
숫자 8개만 썼는데 나머지 2,5,8,0도 같은 규칙이 적용 가능하다.
이 규칙으로 키패드에 맞는 좌표를 구한 다음, 1. 키패드를 좌표로 에서 했던 거리구하기를 코딩하면 되는 것이다.
이걸 제대로 이해해야 코드를 봐도 이해를 할 수 있을거 같아 정리해봤다.
레벨1 안에서도 레벨 차이가 엄청남을 또다시 느끼는 하루였다.
끝!
'코딩테스트' 카테고리의 다른 글
프로그래머스 - 해시 완주하지 못한 선수 풀이(ArrayList를 이용한 풀이와 HashMap을 이용한 풀이 차이점) (0) | 2022.01.11 |
---|---|
코딩테스트 뿌시기 4 - 월간 코드 챌린지 시즌3 없는 숫자 더하기 풀이 (0) | 2022.01.10 |
코딩테스트 뿌시기3 - (JAVA)2019 카카오 개발자 겨울 인턴십크레인 인형뽑기 게임 풀이 (0) | 2022.01.08 |
코딩테스트 뿌시기 2 - 2021 카카오 채용연계형 인턴십 숫자 문자열과 영단어 풀이 (0) | 2022.01.05 |
코딩테스트 뿌시기 1 - 2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천(정규식을 이용한 풀이) (0) | 2022.01.04 |