※ 문제
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다. 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력 하는 프로그램을 작성하세요. 단 회문을 검사할 때 대소문자를 구분하지 않습니다.
▣ 입력설명
첫 줄에 정수 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
▣ 출력설명
첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.
▣ 입력예제 1
gooG
▣ 출력예제 1
YES
※ 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let answer = "YES"
s = s.toLowerCase();
console.log(s);
let a = s.split('').reverse().join('');
console.log(a);
if(a !== s) {
return "NO";
} else {
return answer;
}
}
let str="goooG";
console.log(solution(str));
</script>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s) {
let answer = "YES"
s = s.toLowerCase();
for (let i = 0; i < Math.floor(s.length / 2); i++) {
if (s[i] != s[s.length - i - 1]) {
return "NO";
}
}
return answer;
}
let str = "goooG";
console.log(solution(str));
</script>
</body>
</html>
※ 설명
1. 첫번째 방법
회문문자는 대소문자를 구분하지 않으므로 하나로 통일한다. 따라서 소문자로 통일하기 위해 toLowerCase() 내장함수로 변경해준다.
이후 문자열 s를 split()내장함수를 통해 ‘’를 기준으로 나누고 reverse() 내장함수를 사용하여 문자열의 순서를 바꾼다. 마지막으로 ‘’를 기준으로 다시 구분시켜놓고 새로운 변수 a에 할당해놓는다.
기존의 문자열 s와 순서를 바꾼 a와 같지 않을 경우 “NO”를 return 하고 그렇지 않을 경우(모두 같을 경우) answer의 초기값으로 저장해놨던 “YES”를 return한다.
2. 두번째 방법
회문문자는 대소문자를 구분하지 않으므로 하나로 통일한다. 따라서 소문자로 통일하기 위해 toLowerCase() 내장함수로 변경해준다.
이후 for문을 통해서 문자열을 2로 나눈 수 만큼 반복하여 첫번쨰 문자와 마지막 문자 비교를 시작으로 같지 않을 경우 “NO”를 return하고 그렇지 않을 경우(모두 같을 경우) answer의 초기값으로 저장해놨던 “YES”를 return한다.
※ 핵심
s.split('').reverse().join('')
// 문자열 s를 ''을 기준으로 나누고 순서를 바꾼후 다시 ''을
// 기준으로 구분한다.
해당 내용은 김태원님의 자바스크립트 알고리즘 문제풀이 강의를 듣고 작성한 글입니다.
'🤯 코딩테스트 > Javscript' 카테고리의 다른 글
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 02 - 봉우리 (0) | 2022.01.10 |
---|---|
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 02 - 격자판 최대합 (0) | 2022.01.10 |
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 02 - 등수구하기 (0) | 2022.01.10 |
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 02 - 점수계산 (0) | 2022.01.10 |
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 02 - 가위 바위 보 (0) | 2022.01.10 |