일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 백트래킹
- C++
- 스프링 프레임워크
- dfs
- 딥러닝
- 시애틀
- STL
- leetcode
- 파이썬
- DP
- 백준
- 라인플러스
- 벤쿠버
- 릿코드
- Java
- Spring Framework
- 라인
- 다이나믹프로그래밍
- spring
- C/C++
- 머신러닝
- 프로그래밍언어론
- Python
- 모두를 위한 딥러닝
- binary search
- BFS
- 알고리즘
- 스타벅스
- 프로그래머스
- jvm
Archives
- Today
- Total
케이스윔의 개발 블로그
[프로그래머스][스택] 쇠막대기 본문
문제
레이저, 쇠막대기를 표시하는 string이 들어올 때 레이저에 의해 잘리는 쇠막대기의 개수를 구하시오.
문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42585)
풀이
문제가 레벨2인데도 처음에 보고는 좀 어렵다고 생각했습니다. 근데 매우 간단한 문제였습니다! '('와 ')'가 연속으로 들어올 때에는 레이저를 쏜 것이고 아닐 때의 '('는 쇠막대기의 시작, ')'는 쇠막대기의 끝을 의미합니다. 쇠막대기가 들어오면, 즉 '('이면 스택에 쌓아줍니다. 쇠막대기가 끝나면=')'이면 스택에서 pop해줍니다. 이러한 과정에서 '('와 ')'이 연속으로 들어오면, 레이저를 쏘게되면 그 때 쌓여있는 스택의 사이즈만큼 쇠막대기가 생겨납니다. answer += stack.size() 해주면됩니다. 그리고 쇠막대기가 끝날 때마다 해당 하는 막대기는 하나의 막대기를 추가하게됨을 알 수 있습니다. 스택으로 간단히 해결할 수 있는 문제입니다.(10분 컷!)
코드
https://github.com/kswim/Algorithm/blob/master/etc/42585.cpp
'Algorithm' 카테고리의 다른 글
[프로그래머스][DFS] 후보키 (0) | 2019.02.05 |
---|---|
[프로그래머스][트리] 길 찾기 게임 (0) | 2019.01.31 |
[프로그래머스][카카오] 파일명 정렬 (0) | 2018.12.26 |
[프로그래머스][카카오] n진수 게임 (0) | 2018.12.23 |
[프로그래머스][카카오] 프렌즈4블록 (0) | 2018.12.23 |
Comments