머리를 열심히 굴려서 정답을 맞추는 코드를 작성 하였지만, 마음에 안듭니다 ㅠㅠ
208
작성한 질문수 138
모든 e를 찾아서 해당 위치를 배열에 담고, 루프를 돌려서 제일 최소 거리를 구해서 리턴 하게끔 만들었으나, 무언가 마음에 들지 않네요. 질문 올리고 강사님 강의를 바로 보겠습니다!
function solution(str, str2) {
const findAry = [];
for (let i = 0; i < str.length; i++) {
if (str[i] === str2) findAry.push(i);
}
return str.split("").map((v, index) => {
const max = [];
for (const value of findAry) {
max.push(Math.abs(value - index));
}
eturn max.sort((a, b) => a - b)[0];
});
}
console.log(solution("teachermode","e"));
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
rhkdtjd_12님, JavaScript로 문자열에서 특정 문자(e)까지의 최소 거리를 구하는 코드를 작성하셨군요.
제시해주신 코드는 이미 잘 작동하는 것 같지만, 더 효율적이거나 간결한 코드를 원하시는 경우에는 다음과 같은 접근방식을 생각해볼 수 있습니다.
- 단방향으로만 탐색하는 대신 양방향으로 탐색하여 거리를 계산합니다.
- 왼쪽에서 오른쪽으로 한 번, 그리고 오른쪽에서 왼쪽으로 한 번 탐색하면서 각 문자의 최소 거리를 갱신합니다.
- 이렇게 하면 각 문자마다 모든 ‘e’와의 거리를 계산할 필요 없이, 현재 위치에서 가장 가까운 ‘e’까지의 거리만 계산하게 됩니다.
아래는 이러한 개념을 이용한 개선된 코드 예시입니다.
function solution(s, t) {
const answer = [];
let p = 1000; // 충분히 큰 수로 초기화, 문자열 길이를 넘어서는 값
// 왼쪽 -> 오른쪽으로 탐색하면서 거리 계산
for (let i = 0; i < s.length; i++) {
if (s[i] === t) {
p = 0;
} else {
p++;
}
answer[i] = p;
}
p = 1000; // 다시 초기화
// 오른쪽 -> 왼쪽으로 탐색하면서 거리 갱신
for (let i = s.length - 1; i >= 0; i--) {
if (s[i] === t) {
p = 0;
} else {
p++;
}
answer[i] = Math.min(answer[i], p);
}
return answer;
}
console.log(solution("teachermode", "e"));
이 방법을 사용하면 루프를 더 적게 돌면서 같은 작업을 수행할 수 있어 효율성이 향상됩니다.
한 번 시도해보시고, 더 궁금한 점이 있으시면 언제든 문의하세요!
continue를 사용하는 이유
0
79
2
정렬 가능 여부 판단하기
0
64
2
알고리즘 학습법 관련해서 질문드립니다.
0
86
1
코드 리뷰 부탁드립니다!
0
90
1
indexOf를 사용해서 풀어보았습니다 !!
0
68
1
저는 이런식으로 구현 해보았습니다 !!
0
64
1
12,13,14 강의 소리만 나오고 검은 화면입니다
0
100
3
반복문 최소화하고 indexOf 사용해서 풀어봤습니다
0
63
1
영상 보기 전에 직접 풀어봤습니다.
0
74
1
섹션1의 17번문제 이 풀이로 풀어도 될까요?
0
136
2
정규표현식으로 처리해도 상관없나요 ?
0
120
2
3칸씩 건너뛸 수 있을 경우
0
125
2
강의에 대해 질문있습니다.
0
135
2
Object와 Set을 이용해 풀어봤습니다.
0
117
2
이렇게 해도 되나요?
0
102
2
선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.
0
145
2
이렇게 풀어도 괜찮을까요?
0
138
1
이렇게 풀어도 괜찮을까요?
0
112
1
모든 아나그램 찾기에서 시간복잡도
0
98
1
코드리뷰 부탁드립니다.
0
130
1
for loop 탈출은 return 문으로 해도 되지 않나요?
0
133
1
투포인트알고리즘으로 풀어봤습니다.
0
142
0
코드 리뷰 부탁드립니다.
0
120
1
코드 맞게 작성한 거 아닌가여??
0
146
1





