일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 공변성
- 태그된 유니온
- CI/CD
- ESlint
- map
- tailwind
- 인터섹션
- Promise
- webpack
- 투포인터
- dfs
- SSR
- app router
- 반공변성
- TS
- recoil
- 호이스팅
- async/await
- 결정 알고리즘
- useAppDispatch
- Jest
- autosize
- 타입 좁히기
- 무한 스크롤
- RTK Query
- 리터럴 타입
- CORS
- React
- Cypress
- 이분 검색
Archives
- Today
- Total
짧은코딩
유효한 팰린드롬 본문
반응형
해결법
-내 생각(비효율적 + 틀림)
나는 문자를 반으로 잘라서 뒤에 자른 문자는 다시 뒤집어서 푸는걸 생각했다. 틀렸지만 여러 함수를 배웠으니 정리하려고 한다.
내 코드
<html>
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(s) {
let answer = "YES";
s = s.toLowerCase();
s = s.replace(/,|:|;/g, "");
let len = s.length;
let tmp = "";
if (len % 2 === 0) {
tmp = s.slice(Math.floor(len / 2), len);
s = s.slice(0, Math.floor(len / 2));
} else {
tmp = s.slice(Math.floor(len / 2) + 1, len);
s = s.slice(0, Math.floor(len / 2));
}
tmp = Array.from(tmp);
tmp = tmp.reverse().join("").trim();
if (s !== tmp) {
answer = "NO";
}
return answer;
}
let str = "found7, time: study; Yduts; emit, 7Dnuof";
console.log(solution(str));
</script>
</body>
</html>
정규 표현식을 사용했다.
그리고 문자열을 배열로 만들려면 Array.from(s) 이렇게 사용해야 한다.
해결법
-강사님 풀이
이걸 통째로 뒤집어서 원본과 비교한다. 내 풀이에 비해서 굉장이 단순하다.
강사님 풀이
<html>
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(s) {
let answer = "YES";
s = s.toLowerCase().replace(/[^a-z]/g, "");
let tmp = s.split("").reverse().join("");
if (s !== tmp) answer = "No";
return answer;
}
let str = "found7, time: study; Yduts; emit, 7Dnuof";
console.log(solution(str));
</script>
</body>
</html>
정규 표현식은 a-z가 아닌 문자를 다 없앤다는 의미이다. 그리고 문자열에서 배열로 만든는 것도 split로 간단하게 했다.
반응형
'코딩테스트 with JS > 자바스크립트 알고리즘 문제풀이(인프런)' 카테고리의 다른 글
가장 짧은 문자거리 (0) | 2022.08.16 |
---|---|
숫자만 추출 (0) | 2022.08.15 |
회문 문자열 (0) | 2022.08.13 |
등수구하기 (0) | 2022.08.12 |
가위 바위 보 (0) | 2022.08.11 |
Comments