아스키코드로 숫자만 추출하여 풀어 보았습니다.
279
작성한 질문수 138
자연수를 만들어야 되니 제일 첫번째가 0이 오면 안되므로 replace 정규식을 활용 했습니다.
function solution(args) {
const originalArray = [];
for (const val of args) {
if (val.charCodeAt() >= 48 && val.charCodeAt() <= 57) {
originalArray.push(val);
}
}
return originalArray.join("").replace(/^0/, "");
}
console.log(solution("tge0a1h205er"));
console.log(solution("g0en2T0s8eSoft"));
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
rhkdtjd_12님께서 자바스크립트를 사용하여 문자열에서 숫자만 추출하는 코드를 작성하신 것 같습니다. 작성하신 코드를 분석해보면, 각 문자를 순회하면서 아스키코드를 활용하여 숫자에 해당하는 문자만을 배열에 추가한 뒤, 배열을 문자열로 합치고 가장 처음에 위치한 0을 제거하는 로직을 사용하셨네요.
그러나 코드에는 작은 개선점이 있습니다. val.charCodeAt()는 반복문 안의 같은 문자에 대해 두 번 호출됩니다. 이를 개선하기 위해 한 번만 호출하고 결과를 변수에 저장해 사용하는 것이 좋습니다. 또한 replace 메소드를 사용하여 0을 제거하는 대신, 숫자 추출 과정에서 0이 첫 번째 요소로 와도 문제가 없게 처리할 수도 있습니다.
다음은 이러한 개선점을 적용한 코드 예시입니다:
function solution(args) {
let result = ""; // 최종 문자열을 저장할 변수를 선언합니다.
for (const val of args) {
const charCode = val.charCodeAt(); // charCodeAt() 호출 결과를 저장합니다.
if (charCode >= 48 && charCode <= 57) {
result += val; // 숫자인 경우 바로 result에 추가합니다.
}
}
return result.replace(/^0+/, "") || "0"; // 앞쪽의 0들을 제거하고, 문자열이 비어있다면 "0"을 반환합니다.
}
console.log(solution("tge0a1h205er"));
console.log(solution("g0en2T0s8eSoft"));
코드의 마지막 부분에서 || "0"을 추가하여, 만약 추출된 숫자가 하나도 없으면 "0"을 반환하도록 처리할 수 있습니다. 이렇게 하면 예외적인 상황에도 안정적으로 대응할 수 있습니다.
좋은 질문 감사합니다. 알고리즘 학습에 도움이 되기를 바랍니다!
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





