본문 바로가기
코딩테스트/LeetCode

1974. Minimum Time to Type Word Using Special Typewriter

by 코드스니펫 2024. 3. 15.
반응형

1974. Minimum Time to Type Word Using Special Typewriter

 

leetcode logo

 

특별한 원형 타자기에서 문자를 입력하는 과정은 일상의 타이핑과는 사뭇 다른 경험을 제공합니다. 이 가상의 타자기는 영문 소문자 'a'부터 'z'까지를 원형으로 배열해 놓았고, 문자를 입력하기 위해서는 포인터를 해당 문자에 정확히 맞춰야만 합니다. 여기서는 문자 입력에 드는 최소 시간을 계산하는 문제를 다룹니다.

 

이 글을 통해 효율적인 알고리즘 설계의 중요성과, 각 문자 간의 거리를 계산하는 흥미로운 방법을 배울 수 있을 것입니다.

 

 

코딩테스트 문제 해결 과정

 

leetcode 문제

 

"1974. Minimum Time to Type Word Using Special Typewriter" 문제는 특별한 타자기를 사용하여 단어를 입력할 때 필요한 최소 시간을 계산하는 과제입니다. 각 문자 사이를 이동하거나 입력하는 데에는 1초가 소요됩니다. 초기 포인터는 'a'에 위치해 있습니다.

 

문제 링크▽

https://leetcode.com/problems/minimum-time-to-type-word-using-special-typewriter/description/

 

 

풀이 방법 및 코드 설명

function splitStringIntoChars(word: string): string[] {
    return word.split('');
}

function alphabetDistance(start: string, end: string): number {
    const startPos = start.charCodeAt(0) - 'a'.charCodeAt(0);
    const endPos = end.charCodeAt(0) - 'a'.charCodeAt(0);
    const directDist = Math.abs(endPos - startPos);
    const circularDist = 26 - directDist;
    return Math.min(directDist, circularDist);
}

function minTimeToType(word : string): number {
    let result = 0;
    let arr = splitStringIntoChars(word);
    arr.forEach((x,i)=>{
        const distance = alphabetDistance((i===0?'a':arr[i-1]),x);
        result += distance;
    });
    return result + arr.length;
}

 

1. 주어진 단어를 문자 단위로 쪼개는 함수 splitStringIntoChars를 구현합니다. 이는 문자열을 배열로 변환하는 작업입니다.

 

2. 두 문자 간의 최소 거리를 계산하는 함수 alphabetDistance를 만듭니다. 이 함수는 시작 문자와 종료 문자의 위치를 계산하여 두 문자 간 직선 거리와 원형상의 거리 중 최소값을 반환합니다.

 

3. 각 문자로 이동하고 타이핑하는 데 걸리는 총 시간을 계산하는 메인 함수 minTimeToType를 작성합니다. 이 함수는 전체 이동 거리에 문자 수를 더한 값을 최종 결과로 반환합니다.

 


 

끝으로

본 문제를 통해 알파벳 배열과 타자기 메커니즘을 이해하는 동시에, 실제로 문자 간 이동 거리를 계산하는 알고리즘을 개발하는 방법을 학습할 수 있었습니다.

 

프로그래밍에서는 단순한 문제를 해결하는 것뿐만 아니라, 효율적이고 이해하기 쉬운 코드를 작성하는 능력이 매우 중요함을 다시 한번 깨닫게 되었습니다. 여러분도 이 글을 통해 문제 해결 능력과 코드 최적화 기술을 키우는 데 도움이 되었기를 바랍니다.

 

▼ 30초 더 투자하면 얻게되는 정보 ▼

 

 

2619. Array Prototype Last 문제 소개, 풀이 과정 및 코드 리팩토링

2619. Array Prototype Last 문제 소개, 풀이 과정 및 코드 리팩토링 자바스크립트의 배열은 매우 강력한 데이터 구조 중 하나입니다. 하지만 때때로 우리는 배열의 마지막 요소에 쉽게 접근하고 싶어

lemonlog.tistory.com

 

 

코딩테스트 스택(stack) 문제 - 같은 숫자는 싫어 해결 과정

코딩테스트 스택(stack) 문제 - 같은 숫자는 싫어 해결 과정 우리는 일상 생활 속에서도 불필요한 중복을 피하려는 경향이 있습니다. 이는 프로그래밍에서도 마찬가지로, 특히 배열과 같은 데이터

lemonlog.tistory.com