😎풀이

  1. charCodeLetters: letters를 모두 문자 코드로 변환
  2. targetToCharCode: target을 문자 코드로 변환
  3. 만약, letters의 마지막 글자가 target보다 문자 사전순으로 더 작다면, 문제 조건대로 letters의 첫 문자 반환
  4. 이진탐색
  5. 이진 탐색의 결과로 target보다 큰 최소 문자 반환
function nextGreatestLetter(letters: string[], target: string): string {
    const charCodeLetters = letters.map(letter => letter.charCodeAt(0))
    const targetToCharCode = target.charCodeAt(0)
    if(charCodeLetters.at(-1) <= targetToCharCode) return letters[0]
    let left = 0
    let right = charCodeLetters.length - 1
    while(left <= right) {
        const mid = Math.floor((left + right) / 2)
        if(charCodeLetters[mid] <= targetToCharCode) left = mid + 1
        else right = mid - 1
    }
    return letters[left]
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글