앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 대소문자를 구분하지 않습니다.
<!-- 회문 문자열
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력
하는 프로그램을 작성하세요.
단 회문을 검사할 때 대소문자를 구분하지 않습니다.
▣ 입력설명
첫 줄에 정수 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
▣ 출력설명
첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.
▣ 입력예제 1
gooG
▣ 출력예제 1
YES -->
<html>
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(str) {
let answer = "yes"
let reverseStr = str.toLowerCase().split("").reverse().join("")
if (str !== reverseStr) answer = "no"
return answer
}
let str = "goog"
console.log(solution(str))
</script>
</body>
</html>
컨셉
회문 : 앞으로 읽으나 뒤로읽으나 동일한 문자열.
예를들자면 Hi는 회문이 아니나, HiiH는 회문!
그럼 이걸 전체길이의 2로나눠서 반복문을 돌리거나
문자열을 거꾸로 해서 원본이랑 같은지를 비교하거나 하면 될것 같다.
코드리뷰
a. 위의 컨셉중 문자열을 거꾸로 해서 원본이랑 같은지를 비교했다.
b. answer에 기본값으로 yes를 주고(빈값으로 하면 if문을 한번 더 써야되니까..!) 파라미터로 받은 문자열(str)을 소문자로 바꿔주고, split으로 배열로 바꾼 후, reverse로 반전시켜주고 join으로 다시 문자열로 합쳐줬다.
이 귀찮은 방식을 한 이유는 오직 reverse() <- 반전을 시켜주는 메서드가 '배열' 에서만 되기 때문이다..
c. 그러고나서, 원본문자열과 반전시킨 문자열을 비교 하고, 거짓이면 answer에 no라는 문자열을 할당한다.
위에도 적었지만, 기본값으로 yes를 주었기 때문에, 참이면 yes를 할당하라는 코드를 안쓸 수 있었다.
끗
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(arr){
let n=arr.length;
let answer=Array.from({length:n}, ()=>1);
for(let i=0; i<n; i++){
for(let j=0; j<n; j++){
if(arr[j]>arr[i]) answer[i]++;
}
}
return answer;
}
let arr=[87, 89, 92, 100, 76];
console.log(solution(arr));
</script>
</body>
</html>