목록백준 파이썬 (5)
코딩딩딩

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/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 1. 문제 설명 입력받은 수열에 대하여 연속된 수들의 합중에서 최댓값을 구하는 문제 2. 문제 풀이 첫번째 수부터 시작하여 연속된 수들의 합을 계산하면서 최댓값인 경우 그 수열을 업데이트한다. 예를 들면, '첫번째 원소와 두번째 원소를 더한 값'과 '첫번째 원소'를 비교하여 더 큰 수를 두번째 수로 업데이트한다. 이 과정을 수열의 크기만큼 반복하는 것이다. for i in range(1, n):#연속된 수 ..