Stack 위 그림과 같이 같은 타입의 데이터를 정해진 방향으로만 쌓을 수 있고, top으로 정해진 곳을 통해서만 접근 가능한 자료 구조를 말합니다. top은 가장 최근에 들어온 데이터를 의미하며, 데이터를 추가하는 push 연산과 데이터를 제거하는 pop 연산이 있습니다. 따라서 스택은 후입선출(Last-In First-Out) 구조를 가집니다. 스택 활용 예제를 보면 다음과 같습니다. - 웹 브라우저 방문 기록(뒤로 가기) - 역순 문자열 만들기 - 실행 취소(undo) - 후위 표기법 계산 - 수식의 괄호 검사 1. Array(배열)을 사용하여 스택 구현 package study; public class StackByArray { private static final int MAX_STACK_NUM..
programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 이 문제는 스택(Stack) 자료구조를 통해 해결할 수 있었습니다. 1. 전체 문자를 하나씩 확인하면서 2. stack이 비어있지 않다면 stack의 마지막 문자와 현재 문자를 비교하여 마지막 문자가 더 작은 경우 삭제해야하는 문자의 수가 아직 남은 경우 stack에서 마지막 문자를 삭제합니다. 이 조건을 반복적으로 확인합니다. 3. 문자를 삭제하는 반복이 끝나면 현재 문자를 stack에 저장합니다. 4. 최종적으로 stack에 저장된 문자를 앞에서부터 확인하면서 (전체 문자 - 삭제해야하는 문자의 수) 길이만큼을 선택해 반환합니다. 예제를 통해 살펴보..
www.acmicpc.net/problem/1662 1662번: 압축 압축되지 않은 문자열 S가 주어졌을 때, 이 문자열중 어떤 부분 문자열은 K(Q)와 같이 압축 할 수 있다. K는 한자리 정수이고, Q는 0자리 이상의 문자열이다. 이 Q라는 문자열이 K번 반복된다는 뜻이 www.acmicpc.net 문제는 위에서 확인할 수 있으며 예제로 주어진 압축 문자의 압축을 푸는 방법을 보면 아래와 같습니다. 33(562(71(9))) => 33(562(79)) => 33(567979) => 3567979567979567979 => 결과: 19 처음에는 아주 쉽게 생각해서 순서대로 스택에 저장하다가 ")" 가 들어온 경우 "(" 를 찾을 때까지 앞으로 이동하면서 그 수를 세고 "(" 를 만나면 그 앞에 있는 수..
문제는 위와 같으며 처음에는 커서의 위치를 변수로 가지고 있고 화살표 입력 등에 따라 커서를 이동시키면서 비밀번호를 찾는 방식을 사용하였습니다. 하지만 이렇게 한 경우에는 시간 초과가 발생하였습니다. 그래서 커서를 이동시키지 않고 커서를 기준으로 왼쪽 문자를 담는 배열과 오른쪽 문자를 담는 배열을 따로 선언하는 방식으로 구현하였습니다. 파이썬 코드는 아래와 같습니다. from sys import stdin test_case = int(stdin.readline()) for _ in range(test_case): L = stdin.readline().strip() left = [] right = [] for ch in L: if ch == '': if right: left.append(right.pop(..
- Total
- Today
- Yesterday
- string
- 프로그래머스
- array
- CodeCommit
- BFS
- 수학
- EC2
- Dynamic Programming
- 조합
- ionic
- CodePipeline
- DFS
- AWS
- 소수
- sort
- Combination
- Baekjoon
- java
- map
- programmers
- ECR
- cloudfront
- 에라토스테네스의 체
- permutation
- CodeDeploy
- search
- 순열
- SWIFT
- spring
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |