[프로그래머스 코딩테스트 고득점 kit] 조이스틱 (java)
하나하나 풀고 있었는데 코드가 너무 난잡해지고 비효율적인거같아서 다른 사람의 블로그를 참고했다.
주어진 name만큼 A로 초기화 되어 있기 때문에 연속적으로 A가 나오면 돌아가는 경우를 생각해야 한다.
예를들어, BAAAAB 라는 문자열을 입력으로 받았을때 현재 위치를 0이라고 가정하면 커서를 -> 로 움직이는 방법은 5, <-로 움직이는 방법은 2가지가 나온다(A는 바꿀 필요가 없으니까)
그래서 마지막에 min = Math.min(min, i+i+name.length()-next); 이 코드를 넣어줘야한다.
i한개는 현재 위치까지 커서를 움직인 횟수, 나머지 i한개는 처음으로 돌아가 왼쪽 커서로 마지막 문자열에 가야하기 때문에 온만큼 i를 한번 더 더해준다.
마지막으로 name.length()-next는 처음으로 돌아간 후 마지막 문자열로 이동해서 A가 아닌 문자만큼 이동한 횟수를 더해주면 된다!
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42860
문제풀이
Comments