08.회문 문자열 - 문자열 탐색
Updated:
회문 문자열
🔍 문제
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 “YES”, 회문 문자열이 아니면 “NO”를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 대소문자를 구분하지 않습니다.
🔹 입력설명
첫 줄에 정수 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
🔹 출력 설명
첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.
🔹 입력예제 1
gooG
🔹 출력 예제 1
YES
📌 풀이
먼저 대소문자 구분하지 않기 때문에, string 자체를 대,소문자 하나로 통일해줍니다.
- for 문이 돌면서 같은지 탐색하는 방법
- split 에서 reverse 함수 사용해서 탐색 하는 방법
- 1번 방법 (for 문 검색)
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s) {
let answer = "YES";
s = s.toLowerCase(); // str을 소문자로 통일
let n = s.length;
for (let i =0; i < Math.floor(n/2); i++) { // n 이 홀수 일때도 있으니 Math.floor 내림 사용
if (s[i] !== s[n-i-1]) return "NO" // i 가 0일때 가장 마지막 index 와 비교해야되기 때문에 전체길이 - 현재 index - 1 로 설정 그 다음 부터는 하나씩 앞당겨짐
}
return answer;
}
let str = "goooG";
console.log(solution(str));
</script>
</body>
- 2번 방법 (split, reverse 사용해서 검색)
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s) {
let answer = "YES";
s = s.toLowerCase();
if (s.split("").reverse().join("") !== s) return "NO"; // str 을 하나씩 나누고, 뒤집어서, 다시 합치고 원래 str 과 비교해서 같지 않으면 NO retrun
return answer;
}
let str = "gooG";
console.log(solution(str));
</script>
</body>
Leave a comment