본문 바로가기
728x90
반응형

백준203

[백준] 28279번 : 덱 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 28279번: 덱 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 덱을 deque 자료구조로 만들기 위해 deque 함수를 불러온다. from collections import deque 명령어의 개수를 입력받는다. N = int(sys.stdin.readline()) 덱을 생성한다. d = deque() 명령어 개수만큼 반복하며 for _ in range(N) 하나 이상의 명령어를 정수형으로 입력받아 리스트로 저장한다. o.. 2023. 12. 5.
[백준] 18258번 : 큐 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 큐를 deque 자료구조로 만들기 위해 deque 함수를 불러온다. from collections import deque 명령어의 개수를 입력받는다. N = int(sys.stdin.readline()) 빈 큐를 생성한다. queue = deque() 명령어의 개수만큼 반복하며 for _ in range(N.. 2023. 12. 4.
[백준] 12789번 : 도키도키 간식드리미 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 승환이가 간식을 받을 수 있는지 없는지 판별하는 문제이다. 승환이가 간식을 받으려면 승환이 앞에 서 있는 학생들이 모두 간식을 받아야 한다. 대기열은 한 사람씩 들어갈 수 있고 마지막으로 들어온 순서대로 나갈 수 있으므로 스택 구조를 활용한다. 대기열의 제일 뒤에 서 있는 학생이 현재 순서인지 먼저 판별하고 그게 아니면 현재 줄 서 있는 학생을 차례대로 판별하며 간식을 주거나 대기열로 보낸다. 서 있는 학생을 다 판별했.. 2023. 12. 3.
[백준] 4949번 : 균형잡힌 세상 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 괄호를 기준으로 균형 잡힌 문자열인지 판단하는 문제이다. 소괄호와 대괄호가 올바르게 짝지어져 있으면 균형 잡힌 문자열이고, 그렇지 않다면 균형 잡힌 문자열이 아니다. 괄호가 올바르게 짝지어져 있는지 판단하는 방법은 여는 괄호와 바로 뒤에 닫는 괄호가 일치해야 한다. 문자열의 문자를 확인하며 괄호를 스택에 추가한다. 여기서 닫는 괄호가 나왔을 때, 제일 위에 저장되어 있는 괄호가 동일한 종류의 여는 .. 2023. 12. 2.
[백준] 28278번 : 스택 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 28278번: 스택 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 명령어의 개수를 입력받는다. N = int(sys.stdin.readline()) 빈 스택을 생성한다. stack = list() 명령어 개수만큼 반복하며 for _ in range(N) 1개 이상의 명령어가 입력될 수 있으므로 명령어를 공백으로 분리해 리스트에 저장한다. op = list(map(int, sys.stdin.readline().split()).. 2023. 12. 1.
[백준] 13909번 : 창문 닫기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 13909번: 창문 닫기 서강대학교 컴퓨터공학과 실습실 R912호에는 현재 N개의 창문이 있고 또 N명의 사람이 있다. 1번째 사람은 1의 배수 번째 창문을 열려 있으면 닫고 닫혀 있으면 연다. 2번째 사람은 2의 배수 번째 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 창문을 열고 닫는 과정을 반복하며 최종적으로 열려있는 창문의 개수를 구하는 문제이다. 각 수를 돌아가며 창문을 열고 닫을 수 있지만 위 문제에서 창문의 최대 개수는 21억 개까지 가능하므로 모두 구하는 것은 효율적이지 못한 방법이다. 창문의 개수가 5개이면 최종적으로 1, 4번 창문이 열려있다. 창문의 개수가 10개이면 최종적으로 1, 4, 9번 창문이 열려있다. 창문의 개수가 20개이면 최종적으로 1, 4, 9.. 2023. 11. 30.
[백준] 17103번 : 골드바흐 파티션 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 17103번: 골드바흐 파티션 첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 수의 골드바흐 파티션 개수를 구하는 문제이다. 골드바흐 파티션을 파악하려면 수의 합을 이루는 2개의 숫자가 모두 소수이어야 한다. 여기서 수의 최댓값이 1,000,000이므로 범위가 크다. 해당 범위의 수까지 소수를 판별하려면 많은 시간이 소요되기 때문에 해당 문제에서는 "에라토스테네스의 체" 방법을 활용하여 해당 범위 안의 소수를 구한다. "에라토스테네스의 체"는 제일 작은 소수인 2부터 해당 수의 배수를 모두 제거하고,.. 2023. 11. 29.
[백준] 4134번 : 다음 소수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 4134번: 다음 소수 정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오. www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys sqrt() 함수를 사용하기 위해 math 모듈을 불러온다. import math 테스트 케이스의 개수를 입력받는다. T = int(sys.stdin.readline()) 소수를 판별할 함수를 생성한다. def check(x) 2부터 자기 자신의 제곱수 정수 부분까지 반복하며 for i in range(2, int(math.sqrt(x)) + 1) 만약 판별할 수가 나누어 떨어지면 if (x % i.. 2023. 11. 28.
[백준] 2485번 : 가로수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2485번: 가로수 첫째 줄에는 이미 심어져 있는 가로수의 수를 나타내는 하나의 정수 N이 주어진다(3 ≤ N ≤ 100,000). 둘째 줄부터 N개의 줄에는 각 줄마다 심어져 있는 가로수의 위치가 양의 정수로 주어지며, 가 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 새로 심어야 하는 가로수의 개수를 구하는 문제이다. 이미 심어져 있는 가로수를 보고 모든 가로수의 간격이 동일해지도록 가로수를 더 심어야 한다. 모든 가로수의 간격이 동일해지려면 이미 심어져 있는 가로수 간격들의 최대공약수를 구하여 그 수만큼 간격을 맞춰 새 가로수를 심으면 된다. 최대공약수는 gcd() 함수를 활용하여 구할 수 있고, 간격을 최대공약수로 나눈 몫에 1을 뺀 개수만큼 해당 간격에 새로 가로수를 심.. 2023. 11. 27.
[백준] 1735번 : 분수 합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1735번: 분수 합 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 두 분수를 입력받아 그 합을 구하는 문제이다. 두 분수를 더했을 때, 그 결과를 기약분수로 구해야 한다. 기약분수는 더 이상 약분되지 않는 분수이므로 각 분자와 분모의 최대공약수를 구해 분자와 분모를 이로 나눠야 한다. 최대공약수는 유클리드 호제법을 활용하여 빠르게 구할 수 있는데, 유클리드 호제법이란 두 수를 서로 나누어 최대공약수를 구하는 방법이다. 유클리드 호제법은 "a % b = r이라고 할 때, a와 b의 최대공약수는 b와 r의 최대공약수와 같고, 이를 다시 b .. 2023. 11. 26.
728x90
반응형