Skip to content
On this page

문자열 탐색 문제

수정하기
문서 생성 2021-04-27 17:05:50 최근 수정 2021-04-28 09:51:22

문제 1

  • 팰린드롬(회문): 앞에서 읽는 것과 뒤에서 읽는 것이 같은 문자열
  • 문자열을 입력받고 팰린드롬 여부를 출력
  • 대소문자를 구분하지 않는다.

풀이 1

function solution(str) {
let answer = "YES";
let n = str.length;
str = str.toUpperCase();
for(let i = 0; i < Math.floor(n/2); i++) {
if(str[i] != str[n-i-1])
answer = "NO";
}
return answer;
}
console.log(solution('Wow'));

문제 2

  • 입력된 문자열의 회문 여부를 출력한다.
  • 알파벳 외의 문자는 무시하고 대소문자 구분하지 않는다.

풀이 2

function solution(str) {
let answer = "YES";
str = str.replace(/\W+/g, '').toUpperCase();
let n = str.length;
for(let i=0; i < Math.floor(n/2); i++) {
console.log(str[i], str[n-i-1])
if(str[i] !== str[n-i-1]) {
answer = "NO";
}
}
return answer;
}
console.log(solution('Madam, I\'m Adam.'));
  • str.toLowerCase().replace(/[^a-z]/g, '')
    • 소문자가 아닌 것을 찾아 빈문자열로 변경
  • str.split('').reverse().join('')
    • 뒤집기

문제 3

  • 문자와 숫자가 섞여 있는 문자열이 주어지면 숫자만 추출해 자연수 만들기

풀이 3

function solution(str) {
let answer = '';
// for(let x of str) {
// if(!isNaN(x)) answer += x;
// }
answer = str.replace(/[^0-9]/g, '');
return parseInt(answer);
}
console.log(solution('g09gfjg87f8g5gf'));

문제 4

  • 하나의 문자열 s와 문자 t를 입력받고 s의 각 문자가 문자 t와 떨어진 최소거리를 출력

풀이 4

function solution(str, target) {
let len = str.length;
let answer = Array.from({length: len}, () => 0);
let finds = [];
let pos = str.indexOf(target);
while(pos !== -1) {
finds.push(pos);
pos = str.indexOf(target, pos+1);
}
for(let i = 0; i < len; i++) {
let distance = Number.MAX_SAFE_INTEGER;
for(let j = 0; j < finds.length; j++) {
if(distance > Math.abs(finds[j] - i)) {
distance = Math.abs(finds[j] - i);
}
}
answer[i] = distance;
}
return answer;
}
console.log(solution('teachermode', 'e'));

문제 5

  • 대문자로 된 문자열을 입력받고 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복횟수를 표기해서 출력 반복횟수가 1인 경우 생략

풀이 5

function solution(str) {
let answer = '';
let prev = '';
let cnt = 1;
for(let x of str) {
if (x === prev) {
cnt++;
} else {
answer += (cnt !== 1 ? (cnt + x) : x);
cnt = 1;
}
prev = x;
}
return answer;
}
console.log(solution('KKHSSSSSSSE')); // 'K2HS7E'