반응형

분류 전체보기 269

[파이썬] 단계별 백준 문제 풀기 - 1934 정수 (최소공배수)

문제링크 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 문제 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다. 두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개..

알고리즘 2021.03.15

[파이썬] 단계별 백준 문제 풀기 - 2609 정수 (최대공약수와 최소공배수)

문제링크 문제 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다. 출력 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. - 유클리드 호제법 이용 #a를 b로 나눈 나머지가 r이라면, b를 r로 나눈 나머지가 r2, r을 r2로 나눈 나머지가 r3... # 이를 계속하여 딱 떨어지기 직전의 나머지가 최대공약수가 된다. # 두 수의 곱(a*b)과 최소공배수 * 최대공약수는 같다. def gcd(a,b): if a%b == 0: #a를 b로 나눈 나머지가 0이면, b는 a의 약수이므로 b가 바..

알고리즘 2021.03.15

[파이썬] 단계별 백준 문제 풀기 - 11399 그리디 알고리즘 (ATM)

문제링크 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을..

알고리즘 2021.03.15

[파이썬] 단계별 백준 문제 풀기 - 11047 그리디 알고리즘 (동전 0)

문제링크 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ..

알고리즘 2021.03.15

[파이썬] 단계별 백준 문제 풀기 - 1932 동적 계획법 1 (정수 삼각형)

문제링크 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net import sys n = int(sys.stdin.readline()) dp = [[0]*i for i in range(1,n+1)] origin = [list(map(int,sys.stdin.readline().split())) for _ in range(n)] dp[0][0] = origin[0][0] #맨 윗줄을 dp 리스트에 먼저 넣어주고 시작 for i in range(n): #0부터 4까지, 0,1,2,3,4 for j in range(i+1): # j는 i가 0일때, 0 / i가 1일때, j는 0,1 / i가 ..

알고리즘 2021.03.15

[항해99] 2주차 회고 WIL (Weekly I Learned)

2주차에는 알고리즘 문제를 풀었다. (백준) 기초수학부터 재귀, 이분탐색, 동적계획법, 정렬, 큐, 스택 등등 일주일에 배우기에 좀 벅찼으면서도 재밌었다. (?) 솔직히 재미보다는 좌절감이 더 많이 들었지만, 지나고보니 그래도 짧은시간에 배운 것 치고 많이 늘었다. 아직도 스스로 완벽하게 코드를 짜진 못해도 이제 대충 이렇게 짜는거구나? 에 대한 감은 오는 것 같다!! [배운것] 1) 탈출조건, 무한루프, break 등등 반복문 여기에서 많이 헤맸다. for문 2개를 탈출하려면 break가 2개여야하는구나, 줄 안맞춰쓰면 무한루프 도는구나, 탈출조건 제일 처음에 써줘야하는구나 등등. 기본 파이썬 문법이지만 급하게 먹다보니 대충 씹어 넘기다 체한 것 처럼, 기본적인거에서 오류가 제일 많이 났다. 그 떄마다..

[파이썬] 단계별 백준 문제 풀기 - 1149 동적 계획법 1 (RGB거리)

문제링크 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번..

알고리즘 2021.03.14

[파이썬] 단계별 백준 문제 풀기 - 9461 동적 계획법 1 (파도반 수열)

문제링크 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하는 ..

알고리즘 2021.03.13

[파이썬] 단계별 백준 문제 풀기 - 9184 동적 계획법 1 (신나는 함수 실행)

문제링크 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 문제 재귀 호출만 생각하면 신이 난다! 아닌가요? 다음과 같은 재귀함수 w(a, b, c)가 있다. if a 20, then w(a, b, c) returns: w(20, 20, 20) if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b,..

알고리즘 2021.03.13