[Python] 백준/BOJ 15810번: 풍선 공장 (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 전북대학교 프로그래밍 경진 대회에서는 ACM-ICPC 스타일을 따라 문제를 해결한 팀에게 그 문제에 해당하는 풍선을 달아준다.풍선을 담당하는 N명의 스태프가 있다. 스태프마다 폐활량이 다르기 때문에 하나의 풍선을 만드는 데 걸리는 시간은 다양하다.대회가 시작되고 운영진으로부터 M개의 풍선을 만들어 달라는 의뢰가 들어왔다!각 스태프가 풍선 하나를 만드는 시간(분) Ai를 알고 있을 때, 풍선 M개를 만들기 위해서 최소 몇 분이 걸릴까?풍선을 만든 후에 문제를 표시할 것이기 때문에 풍선의 종류는 상관이 없다.모든 스태프는 풍선을 만드는 데에 정확하게 자신이 말한 시간만큼 걸린다. 예를 들어 스태프 A가 풍선 하나를 만드는 데 5분이 걸린다면, 0분에 만들기 시작해서 5분에 ..
[Python] 백준/BOJ 7662번: 이중 우선순위 큐 (Gold 4)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 이중 우선순위 큐(dual priority queue)는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산(operation) 명령에 따라 우선순위가 가장 높은 데이터 또는 가장 낮은 데이터 중 하나를 삭제하는 점이다. 이중 우선순위 큐를 위해선 두 가지 연산이 사용되는데, 하나는 데이터를 삽입하는 연산이고 다른 하나는 데이터를 삭제하는 연산이다. 데이터를 삭제하는 연산은 또 두 가지로 구분되는데 하나는 우선순위가 가장 높은 것을 삭제하기 위한 것이고 다른 하나는 우선순위가 가장 낮은 것을 삭제하기 위한 것이다.정수만 저장하는 이중 우선순위 큐 Q가 있다고 가정하자. Q에 저장된 각 정수의 값 자체..
[Python] 백준/BOJ 17626번: Four Squares (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 5^2과 1 ^ 2의 합이다; 또한 4 ^ 2 + 3 ^ 2 + 1 ^ 2으로 표현할 수도 있다. 역사적으로 암산의 명수들에게 공통적으로 주어지는 문제가 바로 자연수를 넷 혹은 그 이하의 제곱수 합으로 나타내라는 것이었다. 1900년대 초반에 한 암산가가 15663 = 125 ^ 2 + 6 ^ 2 + 1 ^ 2 + 1 ^ 2라는 해를 구하는데 8초가 걸렸다는 보고가 있다. 좀 더 어려운 문제에 대해서는 56초가 걸렸다: 11339 = 105 ^ 2 + 15 ^ 2 + 8 ^ 2 + 5 ^ 2.자연수 n이 주어..
[Python] 백준/BOJ 2667번: 단지번호붙이기 (Silver 1)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기  과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오.  💡 Approachn * n 배열의 각 칸을 살펴보며 집이 있으면 bfs로 연결 개수를 찾는다.bfs 탐색이 끝나면 연결 개수를 res 리스트에 삽입한다.모든 칸을 탐색한 후에 res의 길이와..
[Python] 백준/BOJ 15965번: K번째 소수 (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 한결이를 도와 k번째 소수를 알려주자.소수의 정의는 다음과 같다.2 이상의 자연수 N이 1과 N을 제외하고 어떤 자연수로도 나누어 떨어지지 않을 때 소수라고 한다. 💡 Approach25점 코드import sysinput = sys.stdin.readlinedef is_prime(target): global k for i in range(2, int(target ** 0.5) + 1): if target % i == 0: return False k -= 1 return Truek = int(input())i = 1while k > 0: i += 1 is_prime(i)print(i)반복문으로 소수 ..
[Python] 백준/BOJ 19699번: 소-난다! (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기  농장에는 N마리의 소가 있다. 농부 존은 소들의 몸무게의 합이 소수(prime)가 되도록 M마리의 소를 선별할 계획이다. 농부 존의 계획에 맞게 소를 선별했을 때 나올 수 있는 몸무게의 합을 모두 출력하시오.  💡 Approach전체 로직조합으로 m마리의 소를 뽑아 후보 리스트에 저장한다.후보를 하나씩 살펴본다.몸무게의 합을 구해 몸무게의 합이 소수이면 정답 리스트에 추가한다.정답 리스트를 정렬해서 출력한다. (비어있으면 -1 출력) 소수 판정 로직target이 1이면 소수가 아니다.target에서 2부터 √ target까지의 값 중 나눠지는 숫자가 있으면 소수가 아니다.1, 2에서 걸리지 않았으면 소수이다.  소수 판정 로직의 2번에서 반복문의 범위가 2 ~ √ t..
[Python] 백준/BOJ 2960번: 에라토스테네스의 체 (Silver 4)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다.이 알고리즘은 다음과 같다.2부터 N까지 모든 정수를 적는다.아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다.P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다.아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다.N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. ✏️ Solution 1import sysinput = sys.stdin.readlinen, k = map(int, input().split())num = [i for i in range(2, n + 1)]while num: p = num.pop..
[Python] 백준/BOJ 1389번: 케빈 베이컨의 6단계 법칙 (Silver 1)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 케빈 베이컨의 6단계 법칙에 의하면 지구에 있는 모든 사람들은 최대 6단계 이내에서 서로 아는 사람으로 연결될 수 있다. 케빈 베이컨 게임은 임의의 두 사람이 최소 몇 단계 만에 이어질 수 있는지 계산하는 게임이다.예를 들면, 전혀 상관없을 것 같은 인하대학교의 이강호와 서강대학교의 민세희는 몇 단계만에 이어질 수 있을까?천민호는 이강호와 같은 학교에 다니는 사이이다. 천민호와 최백준은 Baekjoon Online Judge를 통해 알게 되었다. 최백준과 김선영은 같이 Startlink를 창업했다. 김선영과 김도현은 같은 학교 동아리 소속이다. 김도현과 민세희는 같은 학교에 다니는 사이로 서로 알고 있다. 즉, 이강호-천민호-최백준-김선영-김도현-민세희 와 같이 5단계만..