1974. Minimum Time to Type Word Using Special Typewriter
특별한 원형 타자기에서 문자를 입력하는 과정은 일상의 타이핑과는 사뭇 다른 경험을 제공합니다. 이 가상의 타자기는 영문 소문자 'a'부터 'z'까지를 원형으로 배열해 놓았고, 문자를 입력하기 위해서는 포인터를 해당 문자에 정확히 맞춰야만 합니다. 여기서는 문자 입력에 드는 최소 시간을 계산하는 문제를 다룹니다.
이 글을 통해 효율적인 알고리즘 설계의 중요성과, 각 문자 간의 거리를 계산하는 흥미로운 방법을 배울 수 있을 것입니다.
코딩테스트 문제 해결 과정
"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초 더 투자하면 얻게되는 정보 ▼
'코딩테스트 > LeetCode' 카테고리의 다른 글
1. Two Sum 문제 해결 방법 (0) | 2024.03.21 |
---|---|
2619. Array Prototype Last 문제 소개, 풀이 과정 및 코드 리팩토링 (0) | 2024.03.13 |