반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 싸피셜
- 코딩테스트 자바
- 알고리즘
- 코드트리
- 싸피11기
- 비동기
- ssafy
- 백준
- 싸피 10기
- 싸피10기
- 싸피 대전캠퍼스
- swea
- 싸피 11기
- 싸피 기자단
- 코딩테스트
- 자료구조
- 자바스크립트
- 자바 알고리즘
- 인프런
- SSAFYcial
- 알고리즘 자바
- 싸피 12기
- jpa
- 프로그래머스
- 리액트
- 싸피
- 개발자
- 자바 코딩테스트
- 자바스크립트 자료구조
- 프론트엔드
Archives
- Today
- Total
병아리의 코딩 일기
[스택] 프로그래머스 Lv2. 올바른괄호 풀이 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12909
알고리즘 강의 중 '스택' 부분을 듣고 실습 예제로 풀어본 문제인데 알고보니 2단계!
1단계 연습문제들을 다 풀고, 강의를 듣고 있는데 2단계도 해볼만 하겠다는 생각이 드네요! (착각일수도...ㅋㅅㅋ)
얼른 자료구조 / 알고리즘 배우고 2단계로 넘어가보려구요.
나의 풀이
function solution(s) {
let answer = [s[0]];
for (let i = 1; i < s.length; i++) {
if (s[i] === ")") {
answer.pop();
} else {
answer.push(s[i]);
}
}
return answer.length === 0 ? true : false;
}
그동안 pop, push 함수를 쓰긴 했지만 오늘 배운 스택을 이용해 문제를 풀고자 했다.
먼저 answer 에 문자열 s의 첫번째 인덱스 값을 담아준다.
그리고 for 문을 돌려 s[i] 값이 ")"가 되면 answer에 담긴 "(" 를 제거해준다.
s[i]의 값이 ")"가 아니라면 answer에 push 해준다.
최종적으로 answer의 길이가 0이면 true를, 0이 아니면 false를 return 해준다.
다른 사람의 풀이
function solution(s){
let cum = 0
for (let paren of s) {
cum += paren === '('? 1: -1
if(cum < 0) {
return false
}
}
return cum === 0? true: false;
}
코드를 보자마자 우와 소리가 나왔다.
비슷한 코드지만 더 간결하고 cum 을 0으로 두고
"(" 또는 ")"인지에 따라 +1, -1 을 해준 생각이 기발했다.
728x90
반응형
LIST