[Python] 비동기 프로그래밍(asyncio)
파이썬(python)2025. 3. 4. 16:33[Python] 비동기 프로그래밍(asyncio)

1. 파이썬 비동기 프로그래밍1.1. 기본 개념 및 이벤트 루프비동기 프로그래밍은 I/O 작업 등 시간이 소요되는 작업을 다른 작업과 병렬로 처리하여 전체 프로그램의 응답성을 높이는 방식입니다. 파이썬에서는 asyncio 모듈을 사용하여 비동기 작업을 구현합니다.coroutine: async def로 정의하며, 내부에서 await를 사용하여 다른 코루틴의 완료를 기다립니다.event loop: 비동기 작업을 스케줄링하고 실행하는 중심 메커니즘입니다.1.2. 간단한 비동기 함수 예제import asyncio # asyncio 임포트async def say(message, delay): print(f"'{message}' 출력 대기 중 ({delay}초)") await asyncio.sleep(d..

[백준 18352번] 특정 거리의 도시 찾기
백준2025. 2. 24. 12:56[백준 18352번] 특정 거리의 도시 찾기

[백준 18352번] 특정 거리의 도시 찾기문제 링크 : 특정 거리의 도시 찾기난이도 : 실버 2풀이 날짜 : 2025-02-24📖 문제 설명어떤 나라에는 1번부터 N번까지의 도시와 M개의 단방향 도로가 존재한다. 모든 도로의 거리는 1이다.이 때 특정한 도시 X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히 K인 모든 도시들의 번호를 출력하는 프로그램을 작성하시오. 또한 출발 도시 X에서 출발 도시 X로 가는 최단 거리는 항상 0이라고 가정한다.예를 들어 N=4, K=2, X=1일 때 다음과 같이 그래프가 구성되어 있다고 가정하자.이 때 1번 도시에서 출발하여 도달할 수 있는 도시 중에서, 최단 거리가 2인 도시는 4번 도시 뿐이다. 2번과 3번 도시의 경우, 최단 거리가 1..

[백준 1033번] 칵테일
백준2025. 2. 24. 11:49[백준 1033번] 칵테일

[백준 1033번] 칵테일문제 링크 : 칵테일난이도 : 골드 2풀이 날짜 : 2025-02-23📖 문제 설명august14는 세상에서 가장 맛있는 칵테일이다. 이 칵테일을 만드는 정확한 방법은 아직 세상에 공개되지 않았지만, 들어가는 재료 N개는 공개되어 있다. 경근이는 인터넷 검색을 통해서 재료 쌍 N-1개의 비율을 알아냈고, 이 비율을 이용해서 칵테일에 들어가는 전체 재료의 비율을 알아낼 수 있다.총 재료 쌍 N-1개의 비율이 입력으로 주어진다. 이때, 칵테일을 만드는데 필요한 각 재료의 양을 구하는 프로그램을 작성하시오. 이때, 필요한 재료의 질량을 모두 더한 값이 최소가 되어야 한다. 칵테일을 만드는 재료의 양은 정수이고, 총 질량은 0보다 커야한다.비율은 "a b p q"와 같은 형식이고, a..

[백준 1850번] 최대공약수
백준2025. 2. 23. 18:50[백준 1850번] 최대공약수

[백준 1850번] 최대공약수문제 링크 : 최대공약수난이도 : 실버 2풀이 날짜 : 2025-02-23📖 문제 설명모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오.예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A가 111이고, B가 111111인 경우에는 최대공약수가 111이다.📌 입력첫째 줄에 두 자연수 A와 B를 이루는 1의 개수가 주어진다. 입력되는 수는 $2^{63}$보다 작은 자연수이다.📌 출력첫째 줄에 A와 B의 최대공약수를 출력한다. 정답은 천만 자리를 넘지 않는다.⌨️ 예제 입출력입력3 6출력111📝 풀이 코드import sysimport mathinput = sys...

[백준 1934번] 최소공배수
백준2025. 2. 23. 18:37[백준 1934번] 최소공배수

[백준 1934번] 최소공배수문제 링크 : 최소공배수난이도 : 실버 5풀이 날짜 : 2025-02-23📖 문제 설명두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다.두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오.📌 입력첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000)📌 출력첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출..

[백준 1747번] 소수&팰린드롬
백준2025. 2. 21. 23:58[백준 1747번] 소수&팰린드롬

[백준 1747번] 소수&팰린드롬문제 링크 : 수 찾기난이도 : 골드 5풀이 날짜 : 2025-02-21📖 문제 설명어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다.어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오.📌 입력첫째 줄에 N이 주어진다.📌 출력첫째 줄에 조건을 만족하는 수를 출력한다.⌨️ 예제 입출력입력31출력101📝 풀이 코드import sysimport mathinput = sys.stdin.readlineN = int(input())def is_palindrome(num): #..

[백준 1456번] 거의 소수
백준2025. 2. 19. 17:53[백준 1456번] 거의 소수

[백준 1456번] 거의 소수문제 링크 : 거의 소수난이도 : 실버 1풀이 날짜 : 2025-02-19📖 문제 설명어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다.두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다.📌 입력첫째 줄에 왼쪽 범위 A와 오른쪽 범위 B가 공백 한 칸을 사이에 두고 주어진다.📌 출력첫째 줄에 총 몇 개가 있는지 출력한다.⌨️ 예제 입출력입력1 1000출력25📝 풀이 코드import sysimport math# 빠른 입력을 위한 설정input = sys.stdin.readline# ✅ 입력 받기: 범위 MIN, MAXMIN, MAX = map(int, input().split())def fin..

[백준 1929번] 소수 구하기
백준2025. 2. 19. 16:26[백준 1929번] 소수 구하기

[백준 1929번] 소수 구하기문제 링크 : 소수 구하기난이도 : 실버 3풀이 날짜 : 2025-02-17📖 문제 설명M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.📌 입력첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.📌 출력한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.⌨️ 예제 입출력입력3 16출력3571113📝 풀이 코드import sysimport mathinput = sys.stdin.readline# 입력 받기 (시작 수 N, 종료 수 M)N, M = map(int, input().split())# 소수를 판별할 리스트 (True면 소수)is_prime = ..

image