코드노트

LeetCode 8. String to Integer (atoi) 자바스크립트 문제 풀이 본문

Code note/자바스크립트 알고리즘 문제풀이

LeetCode 8. String to Integer (atoi) 자바스크립트 문제 풀이

코드노트 2022. 9. 27. 14:43

문제 설명

8String to Integer (atoi) / 문자열을 정수로(atoi)

 

  1. 선행 공백을 읽고 무시하십시오.
  2. 다음 문자(문자열 끝에 아직 없는 경우)가 '-'또는 '+'. 이 문자를 읽으십시오. 이것은 최종 결과가 각각 음수인지 양수인지를 결정합니다. 둘 다 없으면 결과가 양수라고 가정합니다.
  3. 다음 숫자가 아닌 문자 또는 입력 끝에 도달할 때까지 다음 문자를 읽습니다. 나머지 문자열은 무시됩니다.
  4. 이 숫자를 정수로 변환합니다(즉 "123" -> 123, , "0032" -> 32). 읽은 숫자가 없으면 정수는 0입니다. 필요에 따라 기호를 변경합니다(2단계부터).
  5. 정수가 32비트 부호 있는 정수 범위를 벗어나면 해당 범위에 남아 있도록 정수를 클램프합니다. 특히, 보다 작은 정수 는 로 고정되어야 하고 , 보다 큰 정수 는 로 고정되어야 합니다 .[-231, 231 - 1]-231-231231 - 1231 - 1
  6. 정수를 최종 결과로 반환합니다.

 

간단하게 정리하면 문자열이 들어오면

1. 공백은 무시한다.

2. 만약 - + 기호가 있으면 최종 결과에 음수, 양수 반영 / 둘다 없으면 양수

3. 정수 범위는 32비트

 

문제설명에서 헷갈리는게 있었지만 이번 문제도 간단했다. parseInt로 변환 후 조건들을 넣어서 범위를 체크하고 반환하면 되는 문제였다.

var myAtoi = function (s) {
  let result = parseInt(s, 10);
  let max = 2147483647;
  let min = -2147483648;
  if (isNaN(result)) return 0;
  if (result > max) return max;
  if (result < min) return min;
  return result;
};

나는 if를 3개 써서 했지만 switch를 사용해서 푸는 방법도 괜찮은거 같다.

이런 문제들만 있으면 그래도 풀수있는 자신감은 생길텐데 가면 갈수록 너무 어려워진다..으아