일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 재귀함수
- 자바
- 코드스테이츠
- 알고리즘
- 재귀와반복문
- String.valueOf()
- 백준 11659
- 투포인터알고리즘
- 버블정렬
- 스택
- 클라우드에서 도커 실행하기
- 코드스테이츠 백엔드
- 싱글톤패턴
- Spring MVC 동작원리
- List.of
- Spring MVC 구성요소
- MySQL
- 11659
- vm인스턴스생성
- 구간합구하기
- Array.asList
- 인텔리제이
- 성능테스트툴
- GCP
- Spring Web MVC
- java
- 코딩테스트
- 프로그래머스
- 백준
- OOP
- Today
- Total
목록스택 (3)
순간을 기록으로
유형 후위식 연산은 대표적인 스택 문제이니 꼭 한번 풀어보자. 풀이 /* * Integer를 담을 스택을 선언 * 문자열을 문자 하나하나씩 접근한다. * 만약 문자가 숫자형 문자이면 * 스택에 넣는다. * 만약 문자가 연산자라면 * 스택에서 상단 숫자 2개를 꺼낸다. * 2개의 숫자를 연산자로 계산한다. * 계산한 결과를 스택에 다시 넣는다. * * 마지막 스택에 남아있는 숫자를 출력한다. * */ 코드 import java.util.Scanner; import java.util.Stack; /* * Integer를 담을 스택을 선언 * 문자열을 문자 하나하나씩 접근한다. * 만약 문자가 숫자형 문자이면 * 스택에 넣는다. * 만약 문자가 연산자라면 * 스택에서 상단 숫자 2개를 꺼낸다. * 2개의 숫자..
문제 유형: 스택 바구니가 한쪽으로만 데이터를 넣는 스택 모양 풀이법 우선 스택 문제니 Stack을 선언한다. 그리고 크레인의 작동 위치 횟수만큼 반복되므로 for-each 문을 사용한다. 크레인의 좌우 위치 값은 2차원 board 배열에서 열에 해당되므로 board [][move-1]로 넣어준다. 인덱스의 이므로 -1을 해줘야 한다. 그리고 크레인이 내려가는 모양은 for문으로 구현한다. i가 증가하면서 만약 인형이 없으면(=원소 값이 0이면) 내려가게 되고, 인형이 있으면 스택 바구니 상단과 비교해 같으면 pop()을하고 값을 2 증가시킨다. 만약 같지 않다면 push()를 이용해 바구니에 넣는다. 그리고 인형을 뺏으니 보드에 인형이 있던 위치에 0을 넣는다. 그리고 크레인은 아래로 안 내려가므로 b..
느낀 점 Stack의 대표적인 문제는 괄호 문제다. 닫는 괄호(')')이면 액션을 취하고 닫는 괄호(')') 이외의 문자(여는 괄호, 다른 문자)는 stack에 넣어주는 게 포인트. 알아가는 것 스택도 제네릭 타입이어서 for-each문으로 접근할 수 있다. stack.pop()의 리턴 값은 제거된 원소이다. 스택은 stack.get(i) 메서드처럼 인덱스로 접근할 수 있다. import java.util.Scanner; import java.util.Stack; /* * 수도코드 * 문자열을 한 문자씩 탐색한다 * 만약 문자가 ')'이라면 가장 가까운 '('까지 스택에 쌓인 문자열을 제거한다. * 만약 ')'이외의 문자라면 스택에 추가한다. * * 스택의 사이즈만큼 반복한다. * 인덱스를 이용해서 스택..