본문 바로가기

전체 글39

[백준] 10773번 : 제로 - Python [파이썬] https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 문제 알고리즘 및 접근 방법 스택을 이용하여 입력받은 수를 스택에 추가하고, 입력받은 수가 0일 때 스택의 요소를 제거하면 되는 간단한 문제이다. 코드 및 풀이 import sys k = int(input()) stack = [] for _ in range(k): inp = int(sys.stdin.readline()) if inp == 0: stack.pop().. 2024. 2. 18.
[백준] 28278번 : 스택 2 - Python [파이썬] https://www.acmicpc.net/problem/28278 28278번: 스택 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 문제 알고리즘 및 접근 방법 이 문제는 스택을 구현하기만 하면 되는 아주 간단한 문제이다. 스택 구현은 리스트, 모듈을 통해 간단하게 할 수 있으며, 아래 링크를 참고하면 된다. https://cozycode.tistory.com/2 [Data Structure] 스택 (Stack) - Python [파이썬] 스택이란? 스택(Stack)은 마지막에 들어간 자료가 가장 먼저 나오는 자료구조로, 자료의 입출력이 후입선출의 형태.. 2024. 2. 18.
[백준] 1300번 : K번째 수 - Python [파이썬] https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 문제 알고리즘 및 접근 방법 문제를 이해해보면, NxN 2차원 배열 A에 수가 담길 때, 그 수들을 오름차순 정렬하여 1차원 배열 B에 넣을 때, B[k]를 출력하면 된다. 이때, 인덱스는 0이 아닌 1부터 시작하는 점을 유의해야 한다. 처음에는 2차원 배열의 수를 1차원 배열에 추가해 정렬하는 방법을 사용했으나, 당연하게도 메모리 초과가 발생했다. 문제에서 주어진 .. 2024. 2. 9.
[백준] 2110번 : 공유기 설치 - Python [파이썬] https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 문제 알고리즘 및 접근 방법 문제부터 이해하자면, C개의 공유기를 설치했을 때 가장 인접하게 설치된 두 공유기 사이의 거리가 최대가 되어야 한다. 즉, 가장 인접하게 설치된 두 공유기 사이의 거리를 최대로 만들면서 C개의 공유기를 설치해야 한다는 뜻이다. 무엇을 기준으로 이분 탐색을 시작해야 하는지 알아채는 것이 이 문제의 관건이다. 처음에는 단.. 2024. 2. 8.