백준71 백준 알고리즘: 1406번 에디터 (Python) 문제 정보 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 핵심 일단 문자열을 리스트 형식으로 바꾸어서 커서의 위치를 인덱스로 지정하고, 해당 위치에서 insert, remove 작업을 통하여 문제를 해결하려고 하는 사람들이 많을것 같다고 생각했다(물론 나도 했다가 시간 초과) 어쩌면 당연했던게 문자열의 길이가 짧은것도 아니고, 많은 수정을 필요로 했기 때문에 삽입, 삭제의 O(n)번의 반복은 이 문제를 해결하는 올바른 방법은 아니었던 것 같다 리스트의 경우 인덱스를 알고있는 상태에서 해당 원소에 접근하는 것은.. 알고리즘/Python 2023. 5. 30. 백준 알고리즘: 10866번 덱 (Python) 문제 정보 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 핵심 덱(Deque)의 구조와 각 명령들에 대해 알면 쉽게 풀이할 수 있는 것 같다 덱(Deque)은 "Double Ended Queue"의 약자로, 양쪽 끝에서 삽입과 삭제가 모두 가능한 선형 자료구조이다. 덱은 큐(Queue)와 스택(Stack)의 기능을 모두 갖고 있어, 큐와 스택의 동작을 유연하게 수행할 수 있다. 덱의 구조는 일렬로 나열된 항목들로 이루어진 컬렉션입니다. 각 항목은 노드(node)라고도 부르며, 이 노드들은 양방.. 알고리즘/Python 2023. 5. 25. 백준 알고리즘: 10828번 스택 (Python) 문제 정보 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 핵심 스택은 기본적인 자료구조형이고 알고있었던 내용이라 구현하는 것은 쉬웠던 것 같다 구현하는 것에 대한 방식의 차이는 있을 수 있지만 대부분 풀이는 비슷할 것 같다 풀이 import sys class solv: def __init__(self): self.stack = [] def push(self, item): self.stack.append(item) def top(self): if self.empty() == 1: return .. 알고리즘/Python 2023. 5. 23. 백준 알고리즘: 10815번 숫자 카드 (Python) 문제 정보 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 핵심 이제 가장먼저, 입력 허용 범위와 개수부터 파악을 하고 들어가는 습관을 가지게 되었다! N의 개수가 많지 않으므로 Sorting Algorithm에 대해서 큰 생각을 하지 않아도 되고(최악의 경우가 아니라면) 값의 숫자의 범위가 넓으므로 배열을 통한 비교도 효율적이지 않을 것이라 생각하였다 따라서 그냥 먼저 정석적으로 이분 탐색을 사용하여 풀이해 보았다 풀이 import sys from bisect import bis.. 알고리즘/Python 2023. 5. 17. baekjoon: 10989번, 수 정렬하기3(Python) 문제 정보 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 핵심 해당 문제는 시간, 메모리 제한이 걸려있는 문제이며 일반적인 입출력 함수를 사용해서는 쉽게 풀 수 없는 문제이다 따라서 sys 라이브러리를 사용하여 입출력을 진행하거나, 아니면 open(0) 처럼 표준 입출력 함수를 사용하여 문제를 풀어야 할 것이다 이번 고찰에서는 이와 같은 표준 입출력 함수에 대하여 간단하게 설명하도록 하겠다 풀이 a = [None] * 10001 b = map(int, open(0)) next(b) for i in b: if a[i] is Non.. 알고리즘/Python 2023. 5. 17. 이전 1 ··· 11 12 13 14 15 다음