[코딩테스트] 조이스틱

시나브로·2021년 7월 17일
0

코딩테스트

목록 보기
24/34
post-thumbnail

문제


조이스틱 문제 바로가기




제출 코드(JAVA)


코드 제출

class Solution {
         public int solution(String name) {
        int answer = 0;

        int len = name.length();

        //최대로 가질 수 있는 min값은 끝까지 가는것
        int min_move = len-1;

        for(int i=0; i<len; i++) {
            answer += Math.min(name.charAt(i)-'A', 'Z'-name.charAt(i)+1);

            //좌우: 연속된 A의 등장에 따라 최소 움직임이 달라진다
            int next = i+1;// 현재 다음 위치부터
            //내 다음이 A라면 계속 NEXT++
            while(next<len && name.charAt(next) == 'A')
                next++;

            min_move = Math.min(min_move, i+len-next + i);
        }//for

        answer += min_move;

        return answer;
    }
}

상하 계산은 쉽게 풀 수 있다.
다만 좌우를 계산하는 과정에서 많이 막혀있었다.
다른 분의 풀이를 보고 해결할 수 있었던 문제.
매 반복문마다
min_move = Math.min(min_move, i+len-next + i);
를 갱신해 더하는게 핵심


정확성 테스트

정확성  테스트
테스트 1 〉	통과 (0.07ms, 52.1MB)
테스트 2 〉	통과 (0.03ms, 52.9MB)
테스트 3 〉	통과 (0.03ms, 52.8MB)
테스트 4 〉	통과 (0.03ms, 52.2MB)
테스트 5 〉	통과 (0.05ms, 51.9MB)
테스트 6 〉	통과 (0.04ms, 52.4MB)
테스트 7 〉	통과 (0.04ms, 52.5MB)
테스트 8 〉	통과 (0.07ms, 52.5MB)
테스트 9 〉	통과 (0.03ms, 53.2MB)
테스트 10 〉	통과 (0.04ms, 52.7MB)
테스트 11 〉	통과 (0.04ms, 52.7MB)



제출 코드(Python)


코드 제출

def solution(name):
    alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
                'V', 'W', 'X', 'Y', 'Z']
    nameArray = [n for n in name]
    min_distance = len(name) - 1;
    result = 0;
    next = 0;
    for i in range(0, len(name)):
        result += min(alphabet.index(nameArray[i]), len(alphabet) - alphabet.index(nameArray[i]))

        next += 1
        while next < len(nameArray) and nameArray[next] == 'A':
            next += 1

        min_distance = min(min_distance, i + i + len(nameArray) - next)

    result += min_distance

    return result

정확성 테스트

정확성  테스트
테스트 1 〉	통과 (0.01ms, 10.3MB)
테스트 2 〉	통과 (0.02ms, 10.2MB)
테스트 3 〉	통과 (0.01ms, 10.3MB)
테스트 4 〉	통과 (0.02ms, 10.3MB)
테스트 5 〉	통과 (0.02ms, 10.3MB)
테스트 6 〉	통과 (0.02ms, 10.3MB)
테스트 7 〉	통과 (0.02ms, 10.2MB)
테스트 8 〉	통과 (0.01ms, 10.2MB)
테스트 9 〉	통과 (0.02ms, 10.3MB)
테스트 10 〉	통과 (0.02ms, 10.3MB)
테스트 11 〉	통과 (0.02ms, 10.2MB)

최근 들어 코테 연습을 하기보단 기업 시험을 보고 다녔다.

한참 기준 미달인 실력이었고, 빠른 시간 내에 풀어야한다는 압박감이 장난아니었다.

고민하는 것도 중요하지만 많이 풀어봐야한다는걸 깨닫고 최대 3~40분동안 풀어보고 감이 안잡히면 다른 사람의 풀이를 보는 방향으로 공부법을 바꾸려고 한다.




profile
Be More!

0개의 댓글