https://programmers.co.kr/learn/courses/30/lessons/12918
내가 푼식 :
풀이 :
2줄. 입력문자열 s의 길이가 1이상 8이하일때 동작하는 if문
3줄. 변수 reg 에 .match() 를 정규식 /\D/g (해당 문자열 전역범위에 대응) 과 같이 사용하여, 만약 문자열이 없다면 null 값을 출력한다.
4줄. s 문자열이 4개 또는 6 이고 reg가 문자열을 갖지 않았다면 null 일때 실행하는 조건문
5줄. 모든 조건이 만족했다면 문자없이 4자리 혹은 6자리의 숫자로만 이루워진 string 이므로 true 를 리턴
7줄. 만약 조건을 만족하지 않았다면 false를 리턴
9줄. 마찬가지로 문자열 길이를 만족하지않았다면 false를 리턴
실패했던 방식:
isNaN을 사용하여 숫자와문자가 합쳐진것을 Number()바꿨을때 값이 NaN으로 뜨는데 true 면 문자와숫자가 썪인것이고,
false라면 NaN이 아니란 뜻이니 숫자만 있다는 뜻이다 하지만 프로그래머스에서 코드케이스11이 실패를 뜨는데 이유는
지수를 나타내는 e 가 숫자로 인식이 되는데 예를들어 "1e22"라고한다면 이를 지수함수 숫자로 인식하기때문이다.
다른사람풀이:
아직 제대로 보지않았지만 정규식을 이용하였는데 대충보면 \d 를 사용하여 숫자에 대응하게하고 이때 {6}$ 을쓰는데 원래 조건이 6자리가 필요하므로 이것은 6자리를 나타내는 정수를 나타낸다고 생각한다 그리고 | 을 이용하여 or 를 쓰고 똑같이 4자리의 숫자에 대응 하는 값을 regex 라는 변수에 넣어준것이다. 만약 숫자로만 이루워졌다면 .test일때 boolean 값으로 출력하는데 s 인자의 문자열 값이 regex 가 나태는것을 대응한다면 true 를 낼것이고 아니라면 false일것이다.
이를 통해 정규표현식(정규식) 을 공부해서 모두 알아야겠다고 생각하게 되었다.
'공부 > 알고리즘&자료구조' 카테고리의 다른 글
항해99 문제25번풀이 (정수 제곱근 판별,프로그래머스) (0) | 2021.11.08 |
---|---|
항해99 문제21번풀이 (이상한 문자 만들기,프로그래머스) (0) | 2021.11.08 |
항해99 문제13번풀이 (2016년 5월24일 요일 가져오기,프로그래머스) (0) | 2021.11.08 |
항해99 문제9번풀이 (핸드폰번호가리기,프로그래머스) (0) | 2021.11.08 |
항해99 문제5번풀이 (문자열을 정수로 바꾸기,프로그래머스) (0) | 2021.11.08 |