본문 바로가기

스택

(4)
[BOJ/백준] 10799번 쇠막대기 | 스택 | 파이썬 문제 풀이 import sys def cutIron(bar): stack = [] cnt = 0 for i in range(len(bar)): if bar[i] == '(': stack.append('(') elif bar[i] == ')': if bar[i-1] == '(': stack.pop() cnt += len(stack) else: stack.pop() cnt += 1 return cnt bar = list(sys.stdin.readline()) print(cutIron(bar)) 스택 자료구조를 사용한 문제. 입력으로 받은 문자열을 리스트 bar로 바꿔 쇠막대기 개수를 세는 함수 cutIron에 넣었다. bar의 길이만큼 반복문을 수행한다. 1) bar[i] 값이 '('이면 쇠막대기의 시작을 ..
[BOJ/백준] 10828번 스택 | 파이썬 (🌠sys.stdin.readline으로 시간 초과 해결) 문제 풀이 import sys n = int(sys.stdin.readline()) stack = [] for i in range(n): cmd = sys.stdin.readline().strip() if 'push' in cmd: stack.append(cmd[5:]) elif cmd == 'pop': if len(stack) == 0: print(-1) else: print(stack.pop()) elif cmd == 'size': print(len(stack)) elif cmd == 'empty': if len(stack) == 0: print(1) else: print(0) elif cmd == 'top': if len(stack) == 0: print(-1) else: print(stack[-1..
자료 구조 | 스택, 큐, 딕셔너리 간단하지만 많이 쓰이는 데이터 구조 세 가지를 살펴보자. 학습 목표 스택, 큐, 딕셔너리의 원리와 구조를 설명할 수 있다. 큐 큐(Queue)는 값이 아래로 쌓이는 구조다. 값을 넣고 뺄 때 선입 선출(FIFO, First in first out) 방식을 따른다. 배열이나 연결 리스트를 통해 구현할 수 있다. 스택 스택(Stack)은 값이 위로 쌓이는 구조다. 값을 넣고 뺄 때 후입 선출(LIFO, last in first out) 방식을 따른다. 배열이나 연결 리스트를 통해 구현할 수 있다. 딕셔너리 딕셔너리(Dictionary)는 키(Key)와 값(Value)이라는 요소로 이루어져 있다(쌍으로 이루어짐). 키에 해당하는 값을 저장하고 읽어오는 방식이다. 일반적으로 해시 테이블과 동일한 개념이라 할 수..
C 언어 | 메모리 교환, 스택, 힙 학습 목표 메모리에 저장된 두 값을 교환하는 코드를 작성할 수 있다. 메모리 교환 입력값을 바꾸는 함수를 만들어 프로그램을 작성해보자. #include void swap(int a, int b); int main(void) { int x = 1; int y = 2; printf("x is %i, y is %i\n", x, y); swap(x,y); printf("x is %i, y is %i\n", x, y); } void swap(int a, int b) { int tmp = a; a = b; b = tmp; } 프로그램을 살펴보자. 정수 a와 b를 입력받아 값을 바꾸는 swap() 함수를 만들었다. swap() 함수는 같은 정수형 변수 tmp를 사용해 값을 바꾼다. main 함수에서 swap() 함수..