타입 챌린지 35991 - MyUppercase

소파의 벨로그·2025년 6월 13일

타입챌린지

목록 보기
113/131

문제 링크

문제

모든 문자를 대문자로 바꾸는 Uppercase<T>를 구현하라

Implement Uppercase<T>, convert all letter to uppercase

내 풀이

type UpperCase = {
  a: 'A',
  b: 'B',
  c: 'C',
  d: 'D',
  e: 'E',
  f: 'F',
  g: 'G',
  h: 'H',
  i: 'I',
  j: 'J',
  k: 'K',
  l: 'L',
  m: 'M',
  n: 'N',
  o: 'O',
  p: 'P',
  q: 'Q',
  r: 'R',
  s: 'S',
  t: 'T',
  u: 'U',
  v: 'V',
  w: 'W',
  x: 'X',
  y: 'Y',
  z: 'Z'
};
type MyUppercase<T extends string> = 
  T extends `${infer Head}${infer Rest}`?
    Head extends keyof UpperCase?
    `${UpperCase[Head]}${MyUppercase<Rest>}`
    :`${Head}${MyUppercase<Rest>}`
  :''

Uppercase를 사용하지 않고 푸는 문제이다

매 문자를 재귀적으로 순회하여
Head가 a~z 내에 있는 경우 그에 맞는 Uppercase를
그렇지 않다면 그냥 Head를 그 뒤에 있는 문자열과 합쳐 반환하는 방식이다.

0개의 댓글