알고리즘 풀이

[20211010]알고리즘 풀이

JoyYellow 2021. 10. 10. 03:28
숫자만 추출
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만 듭니다. 만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205 이 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
function solution(str){
  let onlyN = str.replace(/[^0-9]/g, '')
  for (let i = 0; i < onlyN.length; i++) {
    if(onlyN[i] !== 0) {
      return onlyN.slice(i + 1, onlyN.length)
    }
  }
}

let str="g0en2T0s8eSof89t";
console.log(solution(str));

 

가장 짧은 문자거리
한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출 력하는 프로그램을 작성하세요.
 function solution(s, t){
   let answer = []
   for (let i = 0; i < s.length; i++) {
     if (s[i] === t) answer.push(0)
     else {
       for (let j = 1; j <= s.length; j++) {
         if (i - j >= 0 && s[i - j] === t) {
           answer.push(j)
           break
         }
         if (i + j < s.length && s[i + j] === t) {
           answer.push(j)
           break
         }
       }  
     }
  }
  return answer;
}

let str="teachermodeeabcdccde";
console.log(solution(str, 'e'));

 

문자열 압축
알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시 오. 단 반복횟수가 1인 경우 생략합니다.
function solution(s){
  let answer="";
  let sum = 1;
  for (let i = 1; i <= s.length; i++) {
    if (s[i - 1] === s[i]) {
    	sum++
    } else {
      if (sum !== 1) {
        answer += s[i - 1]
        answer += sum
        sum = 1
      } else answer += s[i - 1]
    }
  }
  return answer;
}

let str="KKHSSSSSSSEEA";