Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로그래머스
- kotlin
- GitHub
- 방법
- 에러
- 알고리즘
- 시큐리티
- 쿼리
- Eclipse
- 생성
- Java
- db
- oracle
- jquery
- 자바
- JPA
- Vue
- 넥사크로
- mybatis
- 함수
- Spring
- aws
- 코틀린
- Git
- JavaScript
- error
- Security
- 스프링
- IntelliJ
- 오라클
Archives
- Today
- Total
송민준의 개발노트
프로그래머스 조이스틱 본문
programmers.co.kr/learn/courses/30/lessons/42860
코딩테스트 연습 - 조이스틱
조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다
programmers.co.kr
------------------------
J E R O E N
9 4 9 12 4 13
------------------------
상하는 아스키코드 활용
좌우는
기본 베이스를 좌에서 우로 순차적으로 쭉 가는 것으로 세팅.
탐색하는 인덱스에서 역으로 갔을 경우 Count
-> 기본 베이스와 Count를 Math.min으로 비교해서 최솟값 구함
class Solution {
public int solution(String name) {
int answer = 0;
int len = name.length();
//최솟값 세팅
int minMove = len-1;
for(int i=0; i<len; i++) {
// 상하
answer += Math.min(name.charAt(i)-'A', 'Z'-name.charAt(i)+1);
// 좌우
int next = i+1;// 현재 다음 위치부터
//다음이 A라면 계속 NEXT++
while(next<len && name.charAt(next) == 'A') {
next++;
}
minMove = Math.min(minMove, i + len - next + i);
}
answer += minMove;
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 (0) | 2022.04.03 |
---|---|
[프로그래머스] 로또의 최고 순위와 최저 순위 (0) | 2021.11.02 |
가장 큰 수 (0) | 2021.02.13 |
프로그래머스 HIndex (0) | 2021.02.07 |
프로그래머스 큰 수 만들기 (0) | 2021.02.04 |