본문 바로가기
728x90

전체 글654

8. 기타 그래프 알고리즘 예제 3문제 (팀 결성, 도시 분할 계획, 커리큘럼) 팀 결성(union - find) n명의 학생이 있다 두 학생의 팀을 합치는 연산과 두 학생의 같은 팀 여부를 확인하는 연산이 있다 입력받아서 연산하고~ 같은팀 여부 확인 연산은 같은팀일 시 Yes, 아닐 시 No 출력 import sys input=sys.stdin.readline def find_parent(parent,x): if parent[x]!=x: parent[x]=find_parent(parent,parent[x]) else: return parent[x] def union_parent(parent,a,b): a=find_parent(parent,a) b=find_parent(parent,b) if a 2022. 8. 9.
개미와의 조우 저번에 바질에 에프킬라 뿌린 이후 이제 바질이 어느정도 잘 자라고 있어서 상했던 이파리를 다 떼주기로 했다 상한 부분이 투명하게 변했다 뒤에 손 갖다대면 손이 보일정도로 진짜 투명해짐... 근데 앞에 뭔가 검정색이 왔다갔다 하는게 느껴짐 개미가 바질이파리에서 피서 즐기는중 더듬이 이래저래 흔들면서 잘 다닌다 보고있으면 개미도 좀 귀여운듯? 더듬이 움직이는게 귀엽다 이건 딴얘기긴한데 토끼 귀도 약간 더듬이같이생겨서 귀여운거같다 토끼를 위에서보면 달팽이를 보는거같아서 위에서 보는거 좋아함 아 근데 개미는 진딧물이랑 친구다 그래서 개미는 집에 들이는게 아닌데.. 귀여운 개미 근데 개미가 원래 날개가 있었나? 2022. 8. 9.
오늘은 휴관 평화로운 월요일 오전 헬스장 가서 깔짝 하고 도서관 가는길 길에 사람도 없다 다 어디갔나? 직장인들은 출근했다 치고 방학한 초중고대딩들은 어디로? 아스팔트 바닥에 뜬금없이 구멍이 나있다 물빠지라고 뚫어놓은건가 저기로 가면 왠지 위험할것같아서 빙 둘러갔다 땀 뻘~뻘 흘리면서 20분 걸어서 도서관 도착 ........... 눈물이 앞을 가린다 사실 눈물은 아니고 땀이 앞을 가린다 이마에서 흐른 땀이 머리카락을 타고 내려와서 눈에 떨어짐 진짜로 근데 이까지 노트북 둘러메고 땀 뻘~뻘 흘리면서 왔는데 집 가긴 좀 그래서... 가까운 스타벅스로.. 출발 가는길에 뭐가 만개했길래 찍었다 뭔진 모르겠는데 폭죽같이 생겨서 신기하다 멀리서 보면 꽃인지도 잘 안보이고 눈에 안 띄는데 가까이서 보니까 예쁘다 가는길에 미리 .. 2022. 8. 8.
이끼 키우기 어제까지만 해도 평화롭던 식물존 오늘 갑자기 무슨일이?? 아뿔싸 귀찮아서 물도 잘 안갈아주고 물에 빛 들어오는것도 막아야하는데 귀찮아서 그냥 뒀더니만 물에서 무언가가 자라고있다 식물과 대화가 필요할 것 같다 ..... 다 씻어내고 은박지로 싸줌 2022. 8. 8.
8. 기타 그래프 이론: 위상 정렬 위상정렬은 방향 그래프의 모든 노드를 '방향성에 거스르지 않도록 순서대로 나열하는'것임 사이클이 없는 방향그래프(DAG:Direct Acycle Graph) 에서 위상정렬 하는 방법 설명. 1. 진입차수가 0인 노드를 큐에 넣는다 2. 큐에서 원소를 꺼내 해당 노드에서 출발하는 간선을 그래프에서 제거한다. 이것을 큐가 빌 때까지 반복한다 만약 그래프에 사이클이 존재한다면.. 사이클에 포함되는 노드는 진입차수가 모두 1이상이 되므로 큐에 들어가지 못하고 정렬이 끝날것이다 from collections import deque v,e=map(int,input().split()) indegree=[0]*(v+1) graph=[[]for i in range(v+1)] for i in range(e): a,b=ma.. 2022. 8. 8.
8. 기타 그래프 이론: 크루스칼 알고리즘 크루스칼 알고리즘 최소 신장 트리를 찾는 알고리즘 최소 신장 트리는 사이클이 존재하지 않고 모든 노드가 연결되어 있어야 함 모든 도시가 연결되어야 하고 도로 건설 비용을 최소화 해야할 때 크루스칼 알고리즘을 사용하면.. 도로를 짓는 데 필요한 최소 비용을 계산할 수 있다 먼저 간선의 정보를 입력받는다(노드1,노드2,비용) 비용에 대하여 오름차순으로 정렬한다 비용이 적게 드는 순으로 노드1,노드2가 사이클이 아니라면(부모 노드가 같지 않다면) 노드 1,2를 union연산을 수행하고, 노드1,2의 부모노드가 같다면 무시한다 동그라미 안 숫자는 각 간선의 비용에 대하여 오름차순으로 번호를 매긴 것이고, 그래프에서 빨간 선은 연결된 것, 파란 선은 연결하지 않고 무시한 것이다 def find_parent(par.. 2022. 8. 8.
8. 기타 그래프 이론: 사이클 판별 def find_parent(parent,x): #연결된 부모 찾는거 if parent[x]!=x: parent[x]=find_parent(parent,parent[x]) return parent[x] def union_parent(parent,a,b): a=find_parent(parent,a) b=find_parent(parent,b) if a 2022. 8. 8.
8. 기타 그래프 이론: 서로소 집합 자료구조 union, find union,find def find_parent(parent,x): #연결된 부모 찾는거 if parent[x]!=x: parent[x]=find_parent(parent,parent[x]) return parent[x] def union_parent(parent,a,b): a=find_parent(parent,a) b=find_parent(parent,b) if a 2022. 8. 8.
백준 2573번: 빙산 https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 문제 지구 온난화로 인하여 북극의 빙산이 녹고 있다. 빙산을 그림 1과 같이 2차원 배열에 표시한다고 하자. 빙산의 각 부분별 높이 정보는 배열의 각 칸에 양의 정수로 저장된다. 빙산 이외의 바다에 해당되는 칸에는 0이 저장된다. 그림 1에서 빈칸은 모두 0으로 채워져 있다고 생각한다. 2 4 5 3 3 2 5 2 7 6 2 4 그림 1. 행의 개수가 5이고 열의 개수가 7인 2차원 배열에 .. 2022. 8. 8.
시나몬 없는 시나몬롤빵 만들기 달달한 빵이 먹고싶어서 시나몬롤빵을 만들어보기로 했다 마침 오늘 대구 날씨가 37도까지 올라가서 빵 발효하기 참 좋겠다는 생각이 들었다 밀가루 300그램 우유 130그램 달걀 1개 버터 45그램 소금5그램 설탕 20그램 이스트 4그램 한 데 넣고 다 섞으면 된다 우유는 살짝 데워서 따뜻하게하고 달걀은 실온에 둬서 미지근하게하고 버터는 전자렌지에 녹여서 넣으면 된다 다 섞고 좀 치대다 보면 이렇게 맨들맨들한 빵 반죽이 됨 빵 반죽할때 처음엔 손에 덕지덕지 달라붙어서 좀 짜증나는데 나름 재미가 있다 이럴 때 아니면 손에 뭔가를 덕지덕지 붙이면서 저지레 할 수 있는 기회가 거의 없다 이때를 즐겨야함 근데 날씨가 너무 더워서 빵반죽 좀 치대는데 땀이 뚝 뚝 뚝 떨어졌다 아마 저 반죽에도 몇방울 들어갔을듯 빵반죽.. 2022. 8. 7.
백준 2133번: 타일 채우기 https://www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 문제 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. 입력 첫째 줄에 N(1 ≤ N ≤ 30)이 주어진다. 출력 첫째 줄에 경우의 수를 출력한다. 4칸에만 딱 맞춰 넣을 수 있는 타일 구성이 있고.. 6칸에만 딱 맞춰 넣을 수 있는 타일 구성이 있고.. ...x칸에만 딱 맞춰 넣을 수 있는 타일이 있다.. 는 점이 어질어질하다 0. 일단 n이 홀수일 때는 타일을 완성할 수가 없다 for i in range(4,31,2): 1. dp[i]=dp[i-2]*dp[2] 뒤에다가 2칸.. 2022. 8. 7.
백준 1699번: 제곱수의 합 문제 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다. 이 경우, 수학자 숌크라테스는 “11은 3개 항의 제곱수 합으로 표현할 수 있다.”라고 말한다. 또한 11은 그보다 적은 항의 제곱수 합으로 표현할 수 없으므로, 11을 그 합으로써 표현할 수 있는 제곱수 항의 최소 개수는 3이다. 주어진 자연수 N을 이렇게 제곱수들의 합으로 표현할 때에 그 항의 최소개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000) 출력 주어진 자연수를 제곱수의 합으로 나타낼 때에 그 제곱수 .. 2022. 8. 6.
직접 키운 바질로 바질페스토 파스타 만들기 바질이 너무 많이자라서 좀 수확을 하기로 했다 지금까지는 뭐 한두장씩 떼서 피자에 올려먹고 했는데 이번에는 많이 따서 바질페스토를 만들려고 함 하트모양 잎 아마 자랄때 내가 옆에있는 이파리 딸려다가 가위로 잘라버려서 저렇게 자란거같음 잎은 한번 손상되면 복구가 안 된다고 한다 대충 너무 무성한 부분만 따줬는데 시원해졌다 바질 하나에서 나온게 저정도니까 꽤 많이 나온듯하다 근데 양을 재보니까 8그램밖에 되지 않았다고 한다 그래도 뭐 안해먹고 버릴순 없으니까 적게라도 만들어 봄 믹서기에 바질잎 넣고 올리브유 넣어야하는데 없어서 식용유 8그램 넣고 잣 넣어야하는데 없어서 아몬드가루 8그램 넣고 해바라기씨 있길래 그거 한 3그램 넣음 그리고 파르미지아노레지아노 치즈 10그램 갈아넣음 소금 한번 갈아서 넣음 아뿔.. 2022. 8. 5.
길에 핀 꽃 국화같이 생겼는데 뭔진 모르겠음 무궁화? 맥문동 나팔꽃인듯 2022. 8. 4.
백준 2579번: 계단 오르기(DP) https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있.. 2022. 8. 4.
백준 1912번: 연속합(DP) https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지.. 2022. 8. 4.
백준 11054번: 가장 긴 바이토닉 부분 수열(DP) https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 문제 수열 S가 어떤 수 Sk를 기준으로 S1 Sk+1 > ... SN-1 > SN을 만족한다면, 그 수열을 바이토닉 수열이라고 한다. 예를 들어, {10, 20, 30, 25, 20}과 {10, 20, 30, 40}, {50, 40, 25, 10} 은 바이토닉 수열이지만, {1, 2, 3, 2, 1, 2, 3, 2, 1}과 {10, 20, 30, 40, 20, 30} 은 바.. 2022. 8. 4.
백준 11722번: 가장 긴 감소하는 부분 수열(DP) https://www.acmicpc.net/problem/11722 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net 문제 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} 이고, 길이는 3이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N.. 2022. 8. 4.
백준 11055번: 가장 큰 증가 부분 수열 https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net 문제 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수열은 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 이고, 합은 113이다. .. 2022. 8. 4.
백준 11053번: 가장 긴 증가하는 부분 수열(DP) https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤.. 2022. 8. 4.
728x90