본문 바로가기
반응형

분류 전체보기163

Gradio 기초(Colab에서 사용하기) 파이썬을 배우고, 머신러닝을 배우고나면 내가 만든 것을 다른 사람들에게 소개하거나 공유하고 싶은 생각이 듭니다. 문제는 이것을 쉽게 보여줄 수 없다는 점입니다. 그럴 경우 Gradio(그라디오)를 사용하여 친구들이나 지인들에게 쉽게 공유가 가능합니다. Gradio란? gradio는 파이썬으로 만든 머신러닝이나 데이터 사이언스로 만든 프로그램을 웹 어플리케이션으로 만들어주는 역할을 합니다. 기본적으로 웹 어플리케이션을 만들기 위해서는 웹에 대한 지식도 있어야하고, 자바스크립트, HTML, CSS로 프론트 부분을 만들고, 장고(Django), 플라스크(Flask)등으로 서버를 만들어 배포를 해야 합니다. Gradio는 이런 복잡한 과정을 생략하고 바로 배포가 가능하다는 장점이 있습니다. 그럼 Colab에 간.. 2023. 9. 11.
파이썬 입력 빠르게 받기 백준 문제를 풀다보면 입력이 많아서 시간초과가 발생하는 경우가 종종 있습니다. 이때 readline을 사용해서 input의 속도를 빠르게 하는 방법은 많이 알려져 있습니다. import sys a = sys.stdin.readline() 이런식으로 기존의 input()을 모두 sys.stdin.readline()으로 바꿔주면 됩니다. 이 방법은 모든 input을 바꿔줘야 하는 귀찮음이 존재합니다. 이럴때 딱 한 번만 readline을 사용하여 모든 input문을 바꿔줄 수 있습니다. 함수를 변수처럼 사용하기 바로 함수를 변수처럼 사용하면 됩니다. 간단한 예를 들어 보겠습니다. def say_hello(): print("Hello World!") a = say_hello a() Hello World!를 출.. 2023. 9. 8.
백준 파이썬 RecursionError 재귀함수 문제를 풀다보면 가끔 RecursionError라는 것이 발생 합니다. 재귀함수가 계속 실행되면 파이썬 입장에서는 무한루프에 빠진것이 아닌가하는 생각을 하게 됩니다. 그래서 일정 수준의 재귀함수가 호출된다면 에러가 발생하게 됩니다. 재귀 최대 깊이 확인하기 파이썬이 정한 최대 재귀 함수의 깊이는 아래 코드로 확인할 수 있습니다. import sys print(sys.getrecursionlimit()) DFS, 다이나믹 프로그래밍등을 재귀로 구현했다면 파이썬이 정한 최대 깊이로는 에러가 발생할수 밖에 없습니다. 따라서 이 문제는 재귀함수가 많이 호출될 거라는 것을 알려주어야 RecursionError가 발생하지 않습니다. 재귀 최대 깊이 수정하기 재귀의 최대 깊이를 수정하는 방법은 아래와 같습니.. 2023. 9. 7.
[백준 2579] 06 정올 초등부 "계단 오르기" 문제 출처 : https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 이 문제는 2006년 정보올림피아드 시. 도 지역 본선 초등부 4번 문제 입니다. 지금으로 따지면 1차 대회에서 초등부 가장 어려운 문제 였습니다. 지금이라면 2~3번 수준의 문제이지 않나 생각합니다. 시간이 흐르면 흐를수록 문제가 어려워지고 있는것 같습니다. 계단을 오르는 규칙을 지키면서 얻을 수 있는 점수의 최댓값을 구하는 문제 입니다. 이런 유형의 문제는 다이나믹 프로그래밍(DP)로 해결할.. 2023. 9. 6.
[백준 14428] 수열과 쿼리 16 문제 출처 : https://www.acmicpc.net/problem/14428 14428번: 수열과 쿼리 16 길이가 N인 수열 A1, A2, ..., AN이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오. 1 i v : Ai를 v로 바꾼다. (1 ≤ i ≤ N, 1 ≤ v ≤ 109) 2 i j : Ai, Ai+1, ..., Aj에서 크기가 가장 작은 값의 인 www.acmicpc.net 세그먼트 트리를 조금 응용한 문제 입니다. 기존에는 리스트의 값을 출력 하였다면 이 문제에서는 해당 인덱스를 출력하는 문제 입니다. 이처럼 세그먼트 트리를 어떤 값을 찾는 것이 아니라 보조적인 수단으로 사용하는 문제가 많이 출제되니 이런 케이스의 문제를 많이 풀어봐야 합니다. 이 문제를 푸는 방법은 .. 2023. 9. 5.
[백준 10972] 다음 순열 문제 출처 : https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net permutations 함수를 사용하면 쉽게 해결 가능한 문제로 보입니다. permutations에 대해 잘 모른다면 다빈치코딩 알고리즘 브루트포스를 확인 바랍니다. 하지만 막상 해결이 쉽지 않습니다. 무작정 해보기 for문을 통해 순열들을 호출해서 입력된 배열과 비교하여 같은 것이 나올 때까지 찾습니다. 같은 것이 나오면 마지막 순열이면 -1을 출력하고, 아니면 다음 순열을 출력하면 됩니다. 하지만 막상 이렇게 풀면 시간초과가 됩니다. 시간.. 2023. 9. 4.
[백준 2517] 2012 정올 고등부 2차 "달리기" 문제 출처 : https://www.acmicpc.net/problem/2517 2517번: 달리기 첫째 줄에는 선수의 수를 의미하는 정수 N이 주어진다. N은 3 이상 500,000 이하이다. 이후 N개의 줄에는 정수가 한 줄에 하나씩 주어진다. 이 값들은 각 선수들의 평소 실력을 앞에서 달리고 있는 www.acmicpc.net 이 문제는 2012년 정보 올림피아드 고등부 문제 입니다. 앞에서부터 자신보다 실력이 높은 사람의 수를 세어 자신의 최고 등수를 찾는 문제 입니다. 단순한 문제이지만 입력의 숫자가 많아 문제를 풀기는 단순하지 않습니다. 등수 찾기 맨 첫 번째 선수는 무조건 1등을 할 수 있습니다. 그리고 다음 선수는 첫 번째 선수보다 실력이 높다면 1등, 실력이 낮다면 2등 입니다. 즉 어떤 .. 2023. 8. 31.
[백준 1865] 웜홀 문제 출처 : https://www.acmicpc.net/problem/1865 1865번: 웜홀 첫 번째 줄에는 테스트케이스의 개수 TC(1 ≤ TC ≤ 5)가 주어진다. 그리고 두 번째 줄부터 TC개의 테스트케이스가 차례로 주어지는데 각 테스트케이스의 첫 번째 줄에는 지점의 수 N(1 ≤ N ≤ 500), www.acmicpc.net 웜홀은 시간이 거꾸로 가는 곳입니다. 따라서 최단 경로를 구할 때 음의 가중치를 가진 간선이라 생각하면 됩니다. 이 문제에서는 음의 사이클이 존재하는지 존재하지 않는지 확인하는 문제입니다. 벨만 포드 알고리즘을 사용하여 음의 사이클이 있다면 YES를, 음의 사이클이 없다면 NO를 출력하는 문제입니다. 다빈치코딩 알고리즘에 벨만포드 알고리즘을 설명해 놓았습니다. 벨만포드 .. 2023. 8. 30.
[백준 15791] 세진이의 미팅 문제 출처 : https://www.acmicpc.net/problem/15791 15791번: 세진이의 미팅 모태 솔로인 세진이는 이번에는 꼭 여자친구를 사귀어야겠다는 마음으로 형진이가 주최한 미팅에 참석하게 된다. 하지만 안타깝게도 컴퓨터공학과는 남초학과이기 때문에 항상 남자의 수가 여 www.acmicpc.net 이 문제는 결국 남자와 여자가 짝이 되는 모든 조합의 개수를 구하는 문제 입니다. 조합의 개수를 구하기 위해서는 다빈치코딩 알고리즘 조합의 개수에 설명하였습니다. 따라서 이 문제는 결국 아래 식의 값만 구하면 됩니다. $$ _nC_m = \frac{n * (n-1) * (n-2)... (n-m+1)}{m * (m-1) *(m-2) *... * 2 * 1} $$ 숫자가 너무 커지는 것을 방지.. 2023. 8. 28.
반응형