[TIL] 항해99 2주차 4DAY

seungbox·2023년 2월 16일
0

TIL

목록 보기
5/13

문제설명

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

처음문제를 풀땐 if문제 isNaN을 써서 판별을 하려 했는데 테스트11에서 걸렸다.
그래서 푸신분들을 찾아보니 parseInt를 비교하는걸로 해서 통과가 된다고 하셨다.

  • 문자열의 각 문자가 모두 숫자로되어있는지 확인 하는 것이므로 정수만 가능하다. === 소수는 안된다.
    return (s.length === 4 || s.length === 6) && s == parseInt(s)

isNaN

isNaN으로는 우리가 원하는 숫자를 찾아내기엔 무리가있다고한다.
숫자가 아닌 값도 true로 걸리기도하고 실제 소수를 isNaN으로 확인해보면 false로 나온다

Number

Number는 해당 문자열의 숫자를 그대로 출력한다.(소수가 정수로 바뀌지않음)
문자열에 문자가 있다면 NaN으로 나온다

parseInt

parseInt는 소수를 출력해도 정수만 나온다
문자열에 문자가 섞여있어도 숫자만 출력해준다.

.Join()

.join 메서드는 배열의 모든 값을 연결해 하나의 문자열로 만든다.

function solution(n) {
  return Number(n.toString().split('').sort((a, b) => b - a).join(''));
}

문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 된다.

입출력 예
   n	return
118372	873211

n의 값을 toString().split()문자열로 반환하고 split으로 여러개의 문자열로 나누었습니다.
그리고 sort를 이용해 내림차순으로 정렬을 한 후 이후에 이 정렬된 값을 어떻게 하나로 묶어야할지 모르겠어서 구글링을 해보니 join 메소드가 있었다.

오늘은 코딩테스트를 풀며 메소드를 좀 더 익혀야겠다.

profile
함께 하는 개발자

0개의 댓글