유효한 팰린드롬
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을
작성하세요.
단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.
알파벳 이외의 문자들의 무시합니다.
▣ 입력설명
첫 줄에 정수 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
▣ 출력설명
첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.
▣ 입력예제 1
found7, time: study; Yduts; emit, 7Dnuof
▣ 출력예제 1
YES
1. 문자열을 보면 특수문자가 포함되어있다. 정규화를 사용해서 특수문자를 없애준다.
2. 메소드 사용해서 소문자로 바꾸고 쪼개고 뒤집고 합치고
3. 조건문으로 비교해준다.
📌작성코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s) {
let answer;
let str;
let strs = s.toUpperCase().replace(/[^a-z]/gi, '');
str = s.replace(/[^a-z]/gi, '').toUpperCase().split('').reverse().join('')
//a-z까지인건 놔두고 그 이외의 것은 '' 없애준다.
if (str === strs) {
answer = 'yes'
} else {
answer = 'no'
}
return answer;
}
let str = "found7, time: study; Yduts; emit, 7Dnuof";
console.log(solution(str));
</script>
</body>
</html>
우선, 값을 저장할 str변수를 하나 만들어준다.
replace() 메소드는 값을 치환해주는 메소드로 정규표현식을 넣어서 사용해보자.
문자열.replace('찾을문자', '대체문자')로 들어오게되고,
(/[^a-z]/gi, '') 소문자 a-z까지인 문자열 중에서 특수문자를 찾아서 특수문자는 제거하고 문자열만 반환한다.
(정규식에 ^의 안들어가면 문자열을 반환하는 것이 아닌, 특수문자만 찾아서 반환하기때문에 ^을 넣어주었다.)
정규식뒤에 gi 는 대소문자를 구분하지않고 모든 문자를 일치 시켜야할 때 붙여준다.
(g를 붙이지않으면 값을 하나만 비교시킴)
조건문을 사용하여 (str === strs)를 비교 하면 값이 출력 된다.
📌정규표현식에 대해서 궁금하면 참고📌
https://github.com/seo0yoon/regexp-test
'알고리즘' 카테고리의 다른 글
[알고리즘 문제] 3-4번 (0) | 2022.06.10 |
---|---|
[알고리즘 문제] 3-3번 (0) | 2022.06.10 |
[알고리즘 문제] 3-1번 (0) | 2022.06.08 |
[알고리즘 문제] 2-6번 (0) | 2022.06.07 |
[알고리즘 문제] 2-5번 (0) | 2022.06.04 |