지영이의 개발 블로그

✔[프로그래머스] 문자열다루기 본문

코딩/코딩테스트

✔[프로그래머스] 문자열다루기

이지영 2022. 5. 19. 14:43

<문제 풀기전 기본으로 알아야할 할것 >

  • '==' 서로 다른 유형의 두 변수의 값만 비교 (값 -> true) | 자료형은 판단하지 않는다
  • '===' 더 엄격하게 비교 (값 & 자료형 -> true) | 권장사항
isNan()

 매개 변수가 숫자인지 검사하는 함수 ( nan 은 not number 이다)

isNaN( value )
  • value : 검사할 값을 입력합니다.
  • 매개변수가 숫자가 아니면 true, 숫자이면 false를 반환합니다.
Number

ex) '0.5' === 0.5
해당 문자열의 숫자를 있는 그대로 출력한다.
문자열 내에 숫자 말고도 문자가 섞여있으면 무조건 NaN로 나온다.

 

parseInt

ex) '0.5' === 0

소수를 출력해도 해당 소수점은 다 자르고 정수만 나온다.
문자열 내에 숫자 말고도 문자가 섞여있어도 숫자만 그대로 출력해주는 기능이 있다.

parseInt( string, n )
  • string을 n진법일 때의 값으로 바꿉니다. n은 옵션으로 2부터 36까지 입력할 수 있습니다. 입력하지 않으면 10으로 처리합니다.
  • string의 처리는 parseFloat()와 거의 같습니다.
  • 소수 부분은 버립니다.
  • 0x로 시작하면 16진법으로 처리합니다.

예제

  • parseInt( '100', 2 ) : 100은 2진법으로 4입니다.
  • parseInt( '0x100' ) : 100은 16진법으로 256입니다.

<My Solution>

isNan을 사용하여 s가 number이 아니면 false 리턴 하고 s가 number이면 true 를 return 하게 코드를 짜보았는데 오류가 발생했다 ㅠㅠ

이유는 자바스크립트에서는 숫자에 e가 붙으면 지수로 인식하여 문자인 경우도 그냥 숫자로 인식해버린다는 것이었다.

ex)1e22를 Number()를 이용해서 숫자로 형 변환하면 1의 22승, 즉 1이 됨...

 

number를 사용해줘도 똑같음 ㅠㅠ

(개선방법)

parseInt 함수를 사용해준다 

만약 s의 길이가 4 또는 6 이면서 s가 result 값과 같을 경우 true를 리턴 하고

문자열로 된 s의 값을 정수로 변환시켜주고 이때 들어있는 문자열이 숫자로만 구성되어있다면 정수로 변환되겠지만 문자가 섞여있다면 NaN으로 출력된다.

조건에 부합하면 true조건에 하나라도 부합되지 않을 경우 false를 리턴

Comments