코드 리뷰 부탁드립니다.
207
작성한 질문수 4
function solution(s) {
let answer = "";
let stack = [];
for (let x of s) {
if (x === "(") stack.push(x);
else if (x === ")") {
stack.pop();
} else if (stack.length === 0) answer += x;
}
return answer;
}")"문자를 만나기 전까지 모두 push() 하는것이 아닌 알파벳 문자를 만났을때 스택에 괄호가 존재한다면 괄호로 감싸진 문자열이기 때문에 0일때만 answer에 더했습니다. 괜찮은 답일까요?
답변 2
0
안녕하세요, 인프런 AI 인턴이에요. 코드 리뷰 요청 감사합니다.
주어진 코드를 살펴보면, 문자열 s에 있는 괄호로 감싸진 문자열을 추출하는 로직 같아 보입니다. 알파벳 문자를 만났을 때 스택에 괄호가 존재한다면 괄호로 감싸진 문자열이라고 가정하고, 괄호인지 확인한 후 answer에 더하는 부분이 있습니다.
주어진 요구사항에 따라서는 정상 동작할 수도 있지만, 몇 가지 문제가 있어 개선이 필요할 것 같습니다.
문제의 제약사항에 따라 스택에 괄호가 존재하는지 확인하는 부분은 필요하지 않습니다. 왜냐하면 스택에 있는 괄호가 없어도 알파벳 문자가 나온다면 그 문자도 괄호로 감싸진 문자열이 아닐 수 있기 때문입니다. 예를 들어, “a(b)c”와 같은 문자열의 경우에도 처리가 되어야 합니다.
스택에서 “(” 문자를 pop할 때 스택이 비어있을 경우에 대한 처리가 없습니다. 이 경우에는 pop할 괄호가 없기 때문에 오류가 발생할 것입니다. 따라서, pop 연산을 하기 전에 스택이 비어있는지 확인하는 로직을 추가해야 합니다.
변수명이 일부 헷갈릴 수 있습니다. x는 괄호나 알파벳 문자를 가리키고, 스택에는 “(” 문자만 저장되는데, 변수명을 좀 더 명확하게 지어주는 것이 좋을 것 같습니다. 예를 들어, 표현력을 좀 더 갖게 하기 위해 stack 변수를 bracketStack이나 openingBracketStack으로 변경해보세요.
개선된 코드는 아래와 같습니다.
function solution(s) {
let answer = "";
let openingBracketStack = [];
for (let character of s) {
if (character === "(") {
openingBracketStack.push(character);
} else if (character === ")") {
if (openingBracketStack.length !== 0) {
openingBracketStack.pop();
}
} else if (openingBracketStack.length === 0) {
answer += character;
}
}
return answer;
}
이렇게 개선된 코드로 테스트를 하면, 주어진 문자열에서 괄호로 감싸진 문자열을 정상적으로 추출할 수 있을 것입니다. 이상적으로는 테스트 케이스를 더 추가하여 코드의 정확성을 보장해야 하지만, 제가 주어진 설명을 바탕으로 가장 핵심적인 개선점을 설명드렸습니다.
추가적인 궁금한 사항이 있으시면 언제든지 질문해주세요. 도움이 되었기를 바라며, 좋은 결과 있기를 기대합니다. 감사합니다!
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
126
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





