앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력
하는 프로그램을 작성하세요.
단 회문을 검사할 때 대소문자를 구분하지 않습니다
function solution(str) {
const strArr = str.split('');
return strArr.every(
(cur, i) =>
strArr[i].toLowerCase() ===
strArr[strArr.length - 1 - i].toLowerCase()
)
? 'Yes'
: 'No';
}
// reverse 이용
// 답은 맞는데 배열도 비교가 되나..?
function solution2(str) {
const arr = str.split('');
return arr === arr.reverse() ? 'Yes' : 'No';
}
// array -> string
function solution2(str) {
const reverseStr = str.split('').reverse().join('');
return str.toLowerCase() === reverseStr.toLowerCase() ? 'Yes' : 'No';
}
console.log(solution('gooG')); // 'Yes'
console.log(solution('gogg')); // 'No'
1번 문제랑 똑같은 거 같은데 뭐가 다른 건지 모르겟음!
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만
듭니다.
만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205
이 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다
// isNaN('3sfs') or ('dfdsfㅇㄹㄴㅁㄹㅇ') === true
// isNaN('3') false
function solution(str) {
let result = '';
str.split('').forEach((v) => {
if (!isNaN(v)) result += v;
});
return Number(result);
}
console.log(solution('g0en2T0s8eSoft')); // 208
한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소 거리를 출
력하는 프로그램을 작성하세요.
못풀음 다시 풀어보기
알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는
문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시
오. 단 반복 횟수가 1인 경우 생략합니다
// KKHSSSSSSSE -> K2HS7E
function solution(str) {
let cnt = 1; // 처음엔알파벳이무조건하나있으니까
let answer = '';
for (let i = 0; i < str.length; i++) {
if (str[i] === str[i + 1]) cnt += 1;
else {
answer += str[i];
if (cnt > 1) answer += String(cnt);
cnt = 1;
}
}
return answer;
}
// 못 풀음. str[i] === str[i+!]이 아니라 answer랑 str을 비교하려고 했음
function mySolution(str) {
let answer = '';
for (let i = 0; i < str.length; i++) {
if (answer.length > 0) {
if (answer[i - 1] === str[i]) {
answer += 1;
} else if (!isNaN(answer[i - 1])) {
}
}
answer += str[i]; // K1 -> K
}
return answer;
}
console.log(solution('KKHSSSSSSSE'));