프로그래머스: 조이스틱
문제
문제에 오류가 있는 것으로 판단됌
https://programmers.co.kr/learn/courses/30/lessons/42860
코드
아래 코드는 통과되지 못했음
1 | private static final int A_ASCII = 65; |
흐름
위 코드는 통과되지 못했음
- 문자들을 A로 뺀 후 거꾸로 도는게 빠른지 정방향으로 도는게 빠른지 확인해서 upDownCurour 변수에 저장
- 문자열에서 A가 제일 길게 연속되는 부분을 찾기 위해 inner class를 하나 만들어서 A가 연속될 때 마다 A가 시작된 index와 연속된 길이를 저장
- A가 제일 길게 저장된 시작 index와 끝 index를 return
- 문자열 내에 A가 없으면 정방향으로 돌리고
- A가 있으면 return된 index들을 가지고 왼쪽과 오른쪽에서 몇 칸씩 이동해야 하는 지 구함
- left와 right를 더하고 가장 짧게 가야하므로 둘 중에 짧은 방향을 한번 더 더함
- 더 한 값이 문자열의 길이보다 길면 정방향으로 가는게 더 짧으므로 비교해서 확인
- 그렇게 구한 값을 더해서 return
- 끝
위 코드는 통과되지 못했음
테스트 케이스
1 | assertEquals(4, test.solution("AAABAA")); |
통과된 코드
- https://by-dev.tistory.com/9
- 위 주소의 코드는 “AAABAA”인 경우 2를 return
- 단순히 B까지 이동하는 것만해도 3이 걸리는데 통과 되었다는게 이해가 가지 않음