no image
[백준-1874] 스택으로 수열 만들기
문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..
2023.10.26
no image
[백준-11003] 최솟값 찾기1
문제 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. 입력 첫째 줄에 N과 L이 주어진다. (1 ≤ L ≤ N ≤ 5,000,000) 둘째 줄에는 N개의 수 Ai가 주어진다. (-109 ≤ Ai ≤ 109) 출력 첫째 줄에 Di를 공백으로 구분하여 순서대로 출력한다. 정답 import sys input = sys.stdin.readline from collections import deque mydeque = deque() N, L = map(int,input().split()) lists = list(map(int,input().s..
2023.10.26
no image
[백준-12981] DNA비밀번호
문제 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA”는 DNA 문자열이 아니지만 “ACCA”는 DNA 문자열이다. 이런 신비한 문자열에 완전히 매료된 민호는 임의의 DNA 문자열을 만들고 만들어진 DNA 문자열의 부분문자열을 비밀번호로 사용하기로 마음먹었다. 하지만 민호는 이러한 방법에는 큰 문제가 있다는 것을 발견했다. 임의의 DNA 문자열의 부분문자열을 뽑았을 때 “AAAA”와 같이 보안에 취약한 비밀번호가 만들어 질 수 있기 때문이다. 그래서 민호는 부분문자열에서 등장하는 문자의 개수가 특정 개수 이상이여야 비밀번호로 사용할 수 있다는 규칙..
2023.10.26
no image
[백준-1253] '좋은 수' 구하기
문제 N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다. N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라. 수의 위치가 다르면 값이 같아도 다른 수이다. 입력 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) 출력 좋은 수의 개수를 첫 번째 줄에 출력한다. 정답 n = int(input()) li = sorted(list(map(int, input().split())) cnt = 0 for i in range(n): arr = li[:i] + li[i + 1:] A, B = 0, len(arr) - 1 wh..
2023.10.26
[핵심요약] 스택과 큐 핵심 이론
스택과 큐는 리스트에서 조금 더 발전한 형태의 자료구조입니다. 스택과 큐는 구조는 비슷하지만 처리 방식은 다릅니다. ♥스택 스택은 삽입과 삭제 연산이 후입선출로 이뤄지는 자료구좋입니다. 후입선출은 삽입과 삭제가 한쪽에서만 일어나는 특징이 있습니다. 파이썬의 스택 →위치 * top : 삽입과 삭제가 일어나느 위치를 뜻한다. →연산(리스트 이름이 s일 때) *s.append(data) : top 위치에 새로운 데이터를 삽입하는 연산이다. *s.pop() : top 위치에 현재 있는 데이터를 삭제하고 확인하는 연산이다. *s[-1] : top 위치에 현재 있는 데이터를 단순 확인하는 연산이다. -> 내용 스택은 깊이 우선 탐색, 백트래킹 종류의 코딩 테스트에 효과적이므로 반드시 알아 두어야 한다. 후입선출은 ..
2023.10.26
[핵심요약] 배열과 리스트
1. 배열이란? 배열은 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조입니다. 배열의 특징 1. 인덱스를 사용하여 값에 바로 접근할 수 있다. 2. 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다. 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정이 필요하다. 3. 배열의 크기는 선언할 대 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 없다. 4, 구조가 간단하므로 코딩 테스트에서 많이 사용한다. 2. 리스트란? 리스트는 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조입니다. 리스트의 특징 1. 인덱스가 없으므로 값에 접근하려면 Head 포인터부터 순서대로 접근해야 한다. (값에 접근하는 속도가 느리다.) 2. 포인터로 연결되어 있으..
2023.10.26