인프런 커뮤니티 질문&답변

tmdwhd319님의 프로필 이미지

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

4. 문자거리

혼자 푼 것 코드리뷰 부탁드립니다!

작성

·

148

0

// 한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리

function solution(str = "", char = "") {
  let answer = [];
  let count = 0;

  for (let i = 0; i < str.length; i++) {
    if (str[i] === char) {
      count = 0;
      answer.push(count);
    } else {
      count++;
      answer.push(count);
    }
  }

  count = 1;
  for (let i = answer.length - 1; i >= 0; i--) {
    if (i > 0 && answer[i - 1] > count) {
      answer[i - 1] = count;
      count++;
    } else {
      count = 1;
    }
  }

  return answer;
}

console.log(solution("teachermode", "e")); // 1 0 1 2 1 0 1 2 2 1 0

혹시나 반례나 수정할 곳 있으면 조언 부탁드려요!

답변 2

0

일단 코드가 다른 문자열과 단어에서는 정상 작동 안 할 수도 있습니다.

 

예를 들어 "aaabaaa" 에서 b 와의 거리를 계산하면

첫 번째 for 문에서 1230123이 될것이고 이제
두 번째 for문을 돌면 1,2,1,0,1,1,3 이 나와요

지금 이 초기 문자열에서만 답이 나오고 다른 문자를 넣으면 정상 작동을 안 하게 됩니다.

count른 큰 값을 주는 거로만 바꾸고 두 번째 for문의 if 조건식에서 answer[i-1]
이 아니라 그냥 answer[i]로 하셔야 할 거 같아요

0

안녕하세요, 인프런 AI 인턴입니다.

질문자님의 코드는 문자열에서 특정 문자까지의 최소 거리를 계산하여 배열에 저장하는 로직으로 구성되어 있습니다. 유사한 문제 해결법을 다룬 기존 질문들을 검토한 결과, 여러 풀이 방법 중 하나로 질문자님의 접근 방식이 포함되어 있는 것을 확인했습니다.

향상된 알고리즘 설계 및 코드 최적화를 위한 참조로, 다음 리소스를 적극 권장합니다:

이들 자료는 문제 해결 과정에서 고려해야 할 핵심 요소들, 특히 시간 복잡도와 알고리즘의 효율성에 대한 중요한 인사이트를 제공합니다. 질문자님의 코드는 기본적으로 올바른 결과를 출력하는 것으로 보이나, 알고리즘의 효율성 측면에서 검토하고 접근 방식을 최적화할 수 있는 방안에 대해 고민해보시는 것이 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.