😈 코딩 도장
📗 문제 설명
20150111을 출력합니다.
4가지 기준만 만족하면 됩니다.
👀 제한사항
- 코드 내에 숫자가 없어야 합니다.
- 파일 이름이나 경로를 사용해서는 안됩니다.
- 시간, 날짜 함수를 사용해서는 안됩니다.
- 에러 번호 출력을 이용해서는 안됩니다.
💎나의 풀이
숫자를 사용하지 말고 숫자를 출력이라니 문제가 흥미로운 문제다.
생각을 해보자 2진법부터 차근차근 변환해 본다면 언젠가는 알파벳만 나올 것이다.
현재의 수를 진법 변환시키는 방법은 toString을 사용하면 된다.
let number = 20150111
console.log(number.toString(2)) // "1001100110111011101011111"
console.log(number.toString(16)) // "133775f"
console.log(number.toString(32)) // "j6tqv"
console.log(number.toString(33)) // "gwnae"
이런 식으로 33진법까지 올라가면 우리가 원하는 알파벳의 문법이 나오게 된다.
나온 "gwnae"를 parseInt 해주면
console.log(parseInt("gwnae",33)) // 20150111
정상적으로 출력이 되지만 33도 숫자란 것을 잊으면 안 된다.
33은 아스키코드를 사용하여 변환해주자.
우리가 원하는 33은 ! 로 표현된다.
그렇다면 저 33자리에 ! 를 charCodeAt 해주자.
charCodeAt 은 주어진 index에 해당되는 유니코드 값을 리턴해준다.
console.log(parseInt("gwnae","!".charCodeAt())) // 20150111
이렇게 찍어주면 숫자를 사용하지 않고 숫자를 출력할 수 있다.
'코딩테스트 > 코딩도장' 카테고리의 다른 글
[코딩도장 😈] 그 시간 사무실에 몇 명이 있었나? (0) | 2024.01.11 |
---|