Today's algorithm : 오늘 날짜 표시하기

강지원·2021년 9월 30일
0
post-thumbnail

오늘이 10월 01일로 뭔가 기념을 하고 싶었는데 코드로 풀어내면
조금 기억에 남겠다 싶었다.
그렇게 풀게 된 알고리즘 퀴 - 즈.

1.날짜 표시하기

20211001 출력하기
1. 코드 내에 숫자가 없어야 합니다.
- 예) console.log(20211001)이라고 하시면 안됩니다.
2. 파일 이름이나 경로를 사용해서는 안됩니다.
3. 시간, 날짜 함수를 사용해서는 안됩니다.
4. 에러 번호 출력을 이용해서는 안됩니다.
5. input을 이용해서는 안됩니다.

2. 문제 풀이

숫자를 사용하지 못하면 문자를 사용해야겠죠?
영어 알파벳을 활용해 숫자로 변환시켜줘서 출력하면 되겠다 그죠?

  1. 설명

변수에 글자를 넣어놓고 메서드나 함수를 이용해 결과를 출력하기로 했다.

얼마 전에 배운 '정규식'이라는 것을 활용해 풀어나가기로 했고,
정규식과 match()를 이용해 문제를 해결할 수 있었다.

문제를 해결하는 도중, 없는 알파벳은 null로 표기가 되어버렸다.


(b, f, g 가 빠져서 match()함수가 맞는 값을 찾지 못해 null을 반환해줬다.)

이를 해결하기 위해서 parseInt나 Number를 활용해 해결하려고 했다.
그런데 parseInt로 해결하려고 했더니 NaN가 출력되었다.

(이게 무슨일이람..)

반대로 Number를 사용했을 땐 값이 제대로 출력되었다.

해결은 했지만..뭔가 찝찝하다.

4.느낀 점

왜 parseInt를 사용했을 땐 NaN이 나오고
Number를 사용했을 땐 값이 제대로 나왔는지를 몰랐는데
문제를 풀며 검색을 통해 몰랐던 점을 해결할 수 있었다.

조금 더 정확한 값을 제공해 주는 것은 parseInt,
조금 더 빠르게 값을 제공해 주는 것은 Number였다.

또한 parseInt는 중간에 string 데이터가 있어도
숫자만 정확하게 집어내는 반면에
Number는 바로 NaN을 때려버린다.

하지만 null값은 이야기가 달랐다.

예외적으로 null을 데이터로 각각 이용해줬을 땐
ParseInt는 NaN을, Number는 0을 준다.


왜 null만 예외인지는 이해하지 못했지만
Number와 ParseInt의 차이를 알게 된 소중한 날이다.
조금씩 실력을 키워가며 이런 차이점을 알아가는 것도
재밌겠다 싶다.

Reference
정규표현식 설명
문자열에서 문자 찾는 몇가지 방법 설명
match() 설명

profile
'Why' better than 'Yes'

0개의 댓글

관련 채용 정보