[Javascript_ 조이스틱]
<STUDY>
📢 문제 📢
조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다.
ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA
조이스틱을 각 방향으로 움직이면 아래와 같습니다.
▲ - 다음 알파벳
▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로)
◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서)
▶ - 커서를 오른쪽으로 이동 (마지막 위치에서 오른쪽으로 이동하면 첫 번째 문자에 커서)
만들고자 하는 이름 name이 매개변수로 주어질 때,
이름에 대해 조이스틱 조작 횟수의 최솟값을 return 하도록 solution 함수를 만드세요.
제한 사항
- name은 알파벳 대문자로만 이루어져 있습니다.
- name의 길이는 1 이상 20 이하입니다.
<전체 코드>
** BBAAAAAAABA와 같이 다시 되돌아 가는 경우의 수를 생각하지 못해 여러 코드를 참고하였습니다. **
그 중 한 블로그 입니다 - 자바로 작성되어 있지만 도움이 많이 되었습니다.
👉 블로그 바로가기
<코드 설명>
- count : 위 / 아래로 움직인 횟수
- moves : 좌 / 우로 움직인 횟수
- curNum : i번째 문자의 아스키코드 번호
☝ 위 / 아래로 움직이는 경우
- 78(N)을 기준으로 78보다 작으면 오른쪽(정방향)으로 조작하고 78보다 크면 왼쪽(역방향)으로 조작한다.
- N이 A에서 13번째 이기 때문에 이후 알파벳들은 거꾸로 움직여야 조작 횟수를 줄일 수 있다.
✌ 좌 / 우로 움직이는 경우 # 가장 헷갈렸던 부분!
- A가 연속되는 부분을 계산하기 위해 while문을 사용하였다.
- 첫 번째 moves : 거꾸로 돌아가는 경우(왼쪽)와 원래대로 가는 경우(오른쪽) 중에서 더 적은 횟수를 선택
- 두 번째 moves : 첫 번째에서 거꾸로 가는 것이 더 효율적인 경우를 고려한 것 (ex BBBAAAAAAAAAB)
2단계 문제를 풀기 시작한지 얼마 되지 않았는데 확실히 1단계보다 한번 더 생각해야 하는 문제들이 많았다.
나도 언젠간... 혼자서 이렇게 풀 수 있는 날이 오겠지...?ㅠㅠ
🔆프로그래머스 Lv2. 조이스틱🔆
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스_자바스크립트] Lv.2 점프와 순간이동 (4) | 2023.01.06 |
---|---|
[프로그래머스_자바스크립트] Lv.2 귤 고르기 (2) | 2023.01.05 |
[프로그래머스_자바스크립트] Lv.2 구명보트 / 그리디 알고리즘, 탐욕법 (0) | 2022.12.30 |
[프로그래머스_자바스크립트] Lv.1 신규 아이디 추천 / 정규식 (0) | 2022.12.26 |
[프로그래머스_자바스크립트] Lv.1 [1차] 비밀지도 / 2진수 변환, toString, padStart (0) | 2022.12.21 |