Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 인덱스
- Inside Of Me
- 6학년 8반 1분단
- 오라클
- 장범준
- 스위트라떼
- 악보
- DBMS
- nginx
- 러블리즈
- 슬픔의 후에
- 개발자
- 핑거스타일
- 말 더듬
- 봄 사랑 벚꽃 말고
- db
- 데이터베이스
- SQL 처리
- 니가 참 좋아
- IT
- 천공의 시간
- 레이디스코드
- index
- oracle
- 아이유
- 신입
- DBMS 구성요소
- 오라클 아키텍처
- I'm fine thank you
- 기타
Archives
취미로 음악을 하는 개발자
[Java] 프로그래머스 스택/큐, 쇠막대기 본문
728x90
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | import java.util.Stack; // 쇠막대기 public class IronRod { public static int solution(String arrangement) { arrangement = arrangement.replace("()", "1"); // 레이저 처리 int answer = 0; // 쇠막대기 총 개수 char curr; // 배치 Stack<Integer> stack = new Stack<>(); for (int i = 0; i < arrangement.length(); i++) { curr = arrangement.charAt(i); if (curr == '(') // 쇠막대기 왼쪽 stack.push(1); else if (curr == ')') // 쇠막대기 오른쪽 answer += stack.pop(); else { // 레이저 처리 answer += stack.size(); // 통과 (8147.37ms, 351MB) // for (int j = 0; j < stack.size(); j++) // stack.set(j, stack.get(j)+1); } } return answer; } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(solution("()(((()())(())()))(())")); } } /* 테스트 케이스 1번 시간초과 import java.util.Stack; // 쇠막대기 public class IronRod { public static int solution(String arrangement) { int answer = 0; char curr, next; Stack<Integer> stack = new Stack<>(); for (int i = 0; i < arrangement.length(); i++) { curr = arrangement.charAt(i); if (i < arrangement.length()-1) next = arrangement.charAt(i+1); else next = ')'; if (curr == '(') { for (int j = 0; !stack.isEmpty() && j < stack.size(); j++) stack.set(j, stack.get(j)+1); if (next == '(') stack.push(1); else // next == ')' answer += stack.size(); } else { // curr == ')' for (int j = 0; !stack.isEmpty() && j < stack.size(); j++) stack.set(j, stack.get(j)-1); if(!stack.isEmpty() && stack.peek() == 0) { stack.pop(); answer++; } } } return answer; } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(solution("()(((()())(())()))(())")); } } */ | cs |
https://programmers.co.kr/learn/courses/30/lessons/42585
'공대인 > Programmers' 카테고리의 다른 글
[Java] 프로그래머스 정렬, K번째 수 (0) | 2019.12.03 |
---|---|
[Java] 프로그래머스 스택/큐, 주식가격 (0) | 2019.12.03 |
[Java] 프로그래머스 스택/큐, 기능개발 (0) | 2019.12.03 |
[Java] 프로그래머스 스택/큐, 다리를 지나는 트럭 (0) | 2019.12.03 |
[Java] 프로그래머스 스택/큐, 프린터 (0) | 2019.12.03 |
Comments