목록백준 (19)
코딩딩딩

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 1. 문제 설명 스택의 구조와 관련 함수를 익히는 문제 2. 문제 풀이 리스트로 스택을 구성하고 리스트 활용함수로 스택의 push와 pop 구현한다. # push stack.append(value) # pop stack.pop() input() 함수를 사용할 경우 시간초과 발생하므로 sys.stdin.readline()함수를 사용한다. import sys sys.stdin.rea..

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 1. 문제 설명 같은 알파벳별로 떨어져 있지 않고 나란히 있는 단어를 그룹단어로 정의하며, 그룹단어의 개수를 구하는 문제 2. 문제 풀이 그룹단어를 결정하는 중요한 점은 각 알파벳별로 나란히 있어야 하는 점이다. 그러므로 나란히 있지 않을 때를 찾아주면 된다. 먼저, 알파벳 26개를 방문했는지 여부를 배열을 활용하여 판단한다. (0: 미방문 1: 방문) charac..

https://www.acmicpc.net/problem/5618 5618번: 공약수 첫째 줄에 n이 주어진다. n은 2 또는 3이다. 둘째 줄에는 공약수를 구해야 하는 자연수 n개가 주어진다. 모든 자연수는 108 이하이다. www.acmicpc.net 1. 문제 설명 2개 ~ 3개의 수를 입력받아 공약수를 출력하는 문제 2. 문제 풀이 최대공약수는 입력받은 수들 중에서 가장 작은 수보다 클 수는 없다. #수 입력 numberList = list(map(int, input().split())) #최솟값 minNumber = min(numberList) 그러므로 1부터 가장 작은 수 까지 돌면서 입력받은 수를 모두 나누어 떨어지게 하는 그 수를 출력한다. #1 ~ 최솟값 for i in range(1, ..

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 1. 문제 설명 한 단계마다 인접한 토마토가 익는 방식으로 토마토 전체가 다 익는 데 걸리는 시간을 구하는 문제 2. 문제 풀이 먼저 리스트에 토마토에 관한 정보를 입력받아 저장한다. box = [] for i in range(n): box.append(list(map(int, input().split()))) box를 돌면서 사과가 있는 위치에 대한 인덱스를 deque에 저장한다..

https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 1. 문제 설명 수들을 입력받아서 자신보다 작은 수가 몇개 있는지 카운팅하는 문제 (수의 중복은 허용하지 않는다.) 2. 문제 풀이 먼저, 이 문제는 중첩반복문으로 풀게 되면 시간초과가 나오게 된다. 그러므로 다른 접근 방법으로 풀어야 한다. 잘 생각해보면 자신보다 작은 다른 수들이 몇개 있는지 카운트하는 것은 결국 오름차순으로 정렬된 리스트의 인..

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 1. 문제 설명 문제에서 제시된 처럼 그래프를 구성하여 1번 컴퓨터와 연결된 컴퓨터를 탐색하는 그래프 탐색 문제. 2. 문제 풀이 그래프를 인접행렬로 구성한다. graph = [[] for _ in range(n+1)] #인접행렬 그래프 for _ in range(m): a, b = map(int, input().split()) graph[a].append(b) #a, b연결 graph[b].appen..