❓문제https://www.acmicpc.net/problem/24479❗문제 정리사용한 파라미터:n(int) : 0번노드를 포함한 정점의 개수m(int) : 간선의 수r(int) : 시작노드의 번호graph(int, list) : dfs를 사용하기 위한 gr
❓문제https://www.acmicpc.net/problem/24480❗문제 정리사용한 파라미터:n(int) : 0번노드를 포함한 정점의 개수m(int) : 간선의 수r(int) : 시작노드의 번호graph(int, list) : dfs를 사용하기 위한 gr
❓문제https://www.acmicpc.net/problem/10814❗문제 정리사용한 기능 : sort, lambda사용한 파라미터:n(int): 회원수data(int, list): (나이, 이름) 형태의 데이터age(int):나이name(string):
❓문제https://www.acmicpc.net/problem/2751❗문제 정리사용한 기능 : 시간 초과 방지를 위한 sys.stdin.readlinesort()사용한 파라미터:n(int): 수 개수numbers(int, list) : 받은 수📑코드📝코드
❓문제https://www.acmicpc.net/problem/1463](https://www.acmicpc.net/problem/1463)❗문제 정리📑코드📝코드 설명최대 10^6까지 입력받을 수 있다하여 0을 포함한크기인 10000001 크기의
❓문제 https://www.acmicpc.net/problem/9461 ❗문제 정리 다이나믹 프로그래밍 📑코드 📝코드 설명 순열의 순서가 11 1 2 2 3 4 5 7 9 12 16...순으로 늘어나기 때문에 이를 이용. 이미 계산한 값을 뽑아오는 형태
❓문제❗문제 정리📑코드📝코드 설명계단수 n, 계단 stairs 입력받기dp테이블 만들어주기 - 최대 300개 이하의 계단이 있다고 하였으므로 dp테이블의 크기를 301로 설정.여기서 dp테이블은 해당 인덱스번째까지 올라갔을때 점수의 최댓값!계단이 1개인경우 입력받은
❓문제https://www.acmicpc.net/problem/1904❗문제 정리피보나치를 알아내면된다!📑코드📝코드 설명자릿수 n 입력받기최대 자릿수가 1,000,000이므로 0을 포함한 인덱스 크기 1,000,001크기의 dp테이블 만들기초기값 넣어주기3
❓문제https://www.acmicpc.net/problem/11404❗문제 정리사용한 파라미터 : n(int) : 도시의 개수m(int) : 버스의 개수a: 시작도시b: 도착도시c: 푤요한 비용📑코드📝코드 설명최단거리 테이블을 무한대로 초기화시키기 위해
https://www.acmicpc.net/problem/1753다익스트라 알고리즘 연습하기INF=int(1e9)distance=INF\*(V+1)start=int(input())graph=\[\[] for \_ in range(V+1)]for i in ran
https://www.acmicpc.net/problem/1504💡 다른 문제와 달리 지나가야하는 특정지점 g, h가 존재시작지점 ->g->h->도착지점 / 시작지점 ->h->g->도착지점의 거리가 시작지점->도착지점의 거리와 같으면 시작지점에서 도착지점까지
https://www.acmicpc.net/problem/13549힙큐라이브러리 임포트, 필요한 인수 받기, 최단거리(시간) 테이블 만들기def heap_dijkstra(start): q=\[] heapq.heappush(q,(0,start)) distance
https://www.acmicpc.net/problem/9370💡 다른 문제와 달리 지나가야하는 특정지점 g, h가 존재시작지점 ->g->h->도착지점 / 시작지점 ->h->g->도착지점의 거리가 시작지점->도착지점의 거리와 같으면 시작지점에서 도착지점까지
https://www.acmicpc.net/problem/1956플루이드 알고리즘필요한 라이브러리 임포트, 인수받기, 최단거리 표현하기 위한 graph만들기v(int) : 마을 개수==노드개수e(int) : 도로 개수==간선개수최단거리를 표현하기 위한 grap
https://www.acmicpc.net/problem/11657벨만 포드 알고리즘: 음의 간선 순환을 사용하므로 다익스트라 사용불가. 다익스트라 사용시, 음의 순환으로 인해 -무한대로 빠져버림. 벨만 포드는 옵티멀한 최단 거리 알고리즘이나, 방문하지 않은
https://www.acmicpc.net/problem/1316string.find : string의 순서대로 정렬된다.중복되는 단어가 있을 경우, 앞에 위치한 단어에 따라 정렬됨.e.g) aba -> aabword를 단어 순서 그대로 정렬한 것 (sorte
조합을 사용하여 카드를 3장 뽑고 그것의 합과 기준 m과의 차이중 가장 작은것을 취함.필요한 파라미터 받기카드 중 중복없이 3장을 뽑아서 조합cards\_예시print(max(loss)+m)
https://www.acmicpc.net/problem/15649순서쌍 앞 뒤가 변경되면 다른 쌍이기에 permutations을 써준다.combinations vs permutations(4,3)과 (3,4)를 combination에서는 중복으로, permu
https://www.acmicpc.net/problem/11047필요한 파라미터 입력받기n(int) : 동전 종류의 개수k(int) : 만들고자하는 금액큰 수부터 거슬러 주면 주는 동전의 최솟값을 빠르게 구할 수 있다.count(int) : 거슬러 주는 동전
https://www.acmicpc.net/problem/2164스택(리스트)로 처리하면 시간초과가난다.큐로 풀어야하는 문제!필요한 파라미터 입력받기n(int) : 카드의 마지막 번호이자 전체 카드 수cards :1부터 n까지의 카드카드가 1개라면 1을 출력.
def dfs(graph, v, visited): visitedv=True print(v,end=' ') for i in graphv: if not visitedi: dfs(graph, i, visited)\`\`\`df
dfs사용, 방문노드를 출력하는 대신, count변수 값을 누적해줌.필요한 파라미터 입력받기computers(int) : 컴퓨터의 수(==노드의수)connected(int) : 네트워크와 연결된 컴퓨터의 수(==간선의 수)graph : 인덱스 노드와 연결된 노드 표시a
https://www.acmicpc.net/problem/1991트리의 전위순회, 중위순회, 후위순회 코드를 그대로 적용하면 풀리는 문제트리 개념/코드 정리예제 1의 트리 모습노드의 역할을 정의해주는 Node 클래스 작성.root는 부모노드,left, righ
https://www.acmicpc.net/problem/11725노드의 개수 n을 입력받고, 양방향 그래프를 그린다.dfs에서 v노드와 연결된 다른 노드 i가 한번도 방문하지 않았을 경우, i에서 다시 dfs를 시작한다. 이 말은, v가 i랑 연결되어있고,
https://www.acmicpc.net/problem/1920이분 탐색 정리: 정렬되어있는 리스트에서 탐색 범위를 절반씩 좁혀가면서 데이터를 탐색하는 방법탐색당할 수들의 개수 n, 탐색당할 수 numbers, 탐색할 수들의 개수m, 탐색할 수 find_nu
https://www.acmicpc.net/problem/2630분할 정복 : 문제를 작은 문제로 분할하여, 분할한 작은 문제들을 해결하고, 작은 문제에 대한 결과를 원본 문제에 대한 결과로 조합.정사각형 종이 한변의 길이 n과 종이 paper를 입력받는다.i
https://www.acmicpc.net/problem/11053수열은 증가하는 수열이다!수열의 길이를 저장하는 dp 테이블을 정의.arrayi가 어떤 증가 부분 수열의 마지막 값이 되기 위해서는 arrayi가 추가되기 전 증가 부분수열의 마지막 값이 arr
https://www.acmicpc.net/problem/7568등수==그 사람보다 큰 사람수를 세는것!전체 사람수 n을 입력받고, 사람별 (무게,키)를 입력받는다.for i in result: print(i+1, end=' ')
https://www.acmicpc.net/problem/10870메모이제이션 기법을 사용하여, 0,1,1 피보나치 수열 초기값을 넣어두고 세번째 인덱스부터 루프를 돌려 배열에 존재하는 값으로 새로운 값을 구한 다음 붙여주었다.💡insight
https://www.acmicpc.net/problem/1978소수는 2부터 루트 자기자신까지의 수로 나누어지지 않는 수를 의미한다.소수=전체 수-소수가 아닌 수sqrt를 사용하기 위해 math 라이브러리를 임포트 해준다.수의 개수 n과 전체 수를 입력받아
https://www.acmicpc.net/problem/1037a들의 공배수를 구하면 되는 문제!a를 이루는 제일 작은 수와 제일 큰 수를 곱해주면, 공배수가 된다.
https://www.acmicpc.net/problem/2609최대공약수 :gcd최소공배수 : (num1\*num2)/gcd(num1, num2)
최소공배수 : (num1\*num2)/gcd(num1, num2)💡insight
https://www.acmicpc.net/problem/11050이항계수 :math.factorial써서 이항계수 수식 구현💡insight
https://www.acmicpc.net/problem/5086약수인 경우 : num1<num2 and gcd(num1, num2)>=2배수인 경우 : num1>num2 and num1\*num2/gcd(num1,num2)==num1최대 공약수 구하는
https://www.acmicpc.net/problem/3036from fractions import FractionsFractions(분자, 분모) : 기약분수로 변환해준다.numerator : 기약분수로 나타낼 때 fraction의 분자 반환.denomi
https://www.acmicpc.net/problem/1010서쪽에 있는 사이트만큼은 무조건 다리를 만들어야한다. 따라서, 동쪽의 개수 중에서 겹치지 않게 서쪽의 사이트 개수 만큼 뽑아주면된다. ->조합$nC_k=\\frac{n!}{(n-k)!k!}$ 💡
https://www.acmicpc.net/problem/1676팩토리얼 표뒤에서부터 0이 나오지 않을때까지 0의 개수를 세야함. pop해서 0이 나오지 않는 순간에 멈춤.팩토리얼 구하기 -> 0을 세기위해 문자로 변환 -> 왼쪽부터 0을 없애면서 0의 수를
https://www.acmicpc.net/problem/9375옷입는 경우의 수 구하기 = (a의 종류수+1)(ㅠ의 종류수+1)... \*(z의 종류수+1)\+1을 하는 이유는 해당 종류의 옷을 입지 않는 경우를 고려하기 위함.\-1을 하는 이유는 문제에서
https://www.acmicpc.net/problem/2981유클리드 호제법 gcd를 이용한다.나머지가 같은 수들의 몫== 수들의 차이의 최대공약수의 약수를 구하는 것이다.a,b,c의 나머지가 같은 몫==(a-b), (b-c)의 최대공약수의 약수를 구하는