백준 알고리즘
-
이 문제는 그리디 알고리즘을 이용하여 푸는 문제이다. 그리디 알고리즘 👇 [알고리즘] 그리디 알고리즘이란?(Greedy Algorithms) 💡그리디 알고리즘(Greedy Algorithm) 그리디 알고리즘이란 탐욕적인 알고리즘이라고도 하며, 선택의 순간마다 당장 눈앞에 보이는 최적인 상황만을 쫓아 최종적인 해답에 도달하는 방법 - 문제를 dvlpseo.tistory.com 그리디 알고리즘이란 선택의 순간마다 당장 눈앞에 보이는 최적인 상황만을 쫓아 최종적인 해답에 도달하는 방법이다. 회의실이 가장 많이 이용되려면 현재 사용하고 있는 회의의 종료시간이 빨라야한다. 그리고 한가지 더 고려해야 할 점은 만약 종료시간이 같은 경우이다. 예를 들어 [시작 시간, 끝나는시간] 이 [2,2] [1,2]가 있는 경우..
[백준 문제풀기 with Python] #1931번 - 회의실 배정이 문제는 그리디 알고리즘을 이용하여 푸는 문제이다. 그리디 알고리즘 👇 [알고리즘] 그리디 알고리즘이란?(Greedy Algorithms) 💡그리디 알고리즘(Greedy Algorithm) 그리디 알고리즘이란 탐욕적인 알고리즘이라고도 하며, 선택의 순간마다 당장 눈앞에 보이는 최적인 상황만을 쫓아 최종적인 해답에 도달하는 방법 - 문제를 dvlpseo.tistory.com 그리디 알고리즘이란 선택의 순간마다 당장 눈앞에 보이는 최적인 상황만을 쫓아 최종적인 해답에 도달하는 방법이다. 회의실이 가장 많이 이용되려면 현재 사용하고 있는 회의의 종료시간이 빨라야한다. 그리고 한가지 더 고려해야 할 점은 만약 종료시간이 같은 경우이다. 예를 들어 [시작 시간, 끝나는시간] 이 [2,2] [1,2]가 있는 경우..
2023.05.11 -
처음 풀었던 방법 어떤 개념을 써야하겠다라는 생각을 하지 못하고 막연히 생각하였다. 몇번 예제로 최대 차이를 구하다보니 중간값이 1번째 배열의 위치에서 시작하여 나머지 값들을 for문으로 돌아가면서 첫번째 값과의 차이를 구하여 제일 차이가 많이 나는 값이 그 다음 배열에 위치하도록 풀어나갔다. 처음 짰던 코드이다. import sys N = int(sys.stdin.readline()) count = 0 plus = 0 result2 = 0 A = list(map(int, sys.stdin.readline().split())) A.sort() print(A) if N % 2 == 0: k = int(N/2) A[k], A[0] = A[0], A[k] else: k = int(N/2)+1 A[k], A[0..
백준 문제풀기 [#10819번] - 차이를 최대로처음 풀었던 방법 어떤 개념을 써야하겠다라는 생각을 하지 못하고 막연히 생각하였다. 몇번 예제로 최대 차이를 구하다보니 중간값이 1번째 배열의 위치에서 시작하여 나머지 값들을 for문으로 돌아가면서 첫번째 값과의 차이를 구하여 제일 차이가 많이 나는 값이 그 다음 배열에 위치하도록 풀어나갔다. 처음 짰던 코드이다. import sys N = int(sys.stdin.readline()) count = 0 plus = 0 result2 = 0 A = list(map(int, sys.stdin.readline().split())) A.sort() print(A) if N % 2 == 0: k = int(N/2) A[k], A[0] = A[0], A[k] else: k = int(N/2)+1 A[k], A[0..
2023.04.28 -
문제 푸는 방법: 1. 입력받은 가로와 세로의 길이를 각각 가로배열 = [0, 가로] / 세로 배열= [0, 세로] 의 배열에 넣어준다. 2. 점선을 자르는 값이 (0, 값)으로 들어오면 가로로 자르는 점선이므로 1번에 만들어 준 가로 배열에 값을 넣어주고 (1, 값)으로 들어오면 세로로 자르는 점선이므로 세로 배열에 값을 넣어준다. 3. 가로 배열과 세로 배열을 sort()함수를 이용하여 오름차순으로 정렬해준 뒤, 각 근접해있는 값끼리의 차이를 계산하여 가장 차이가 큰 값만 추출해준다. 4. 가로에서 차이가 큰 값과 세로에서 차이가 큰 값의 곱이 가장 큰 종이 조각이 된다. 구현한 코드 x, y = map(int, input().split()) a = [0, x] b = [0, y] n = int(in..
백준 문제풀기 [#2628번] - 종이자르기 문제문제 푸는 방법: 1. 입력받은 가로와 세로의 길이를 각각 가로배열 = [0, 가로] / 세로 배열= [0, 세로] 의 배열에 넣어준다. 2. 점선을 자르는 값이 (0, 값)으로 들어오면 가로로 자르는 점선이므로 1번에 만들어 준 가로 배열에 값을 넣어주고 (1, 값)으로 들어오면 세로로 자르는 점선이므로 세로 배열에 값을 넣어준다. 3. 가로 배열과 세로 배열을 sort()함수를 이용하여 오름차순으로 정렬해준 뒤, 각 근접해있는 값끼리의 차이를 계산하여 가장 차이가 큰 값만 추출해준다. 4. 가로에서 차이가 큰 값과 세로에서 차이가 큰 값의 곱이 가장 큰 종이 조각이 된다. 구현한 코드 x, y = map(int, input().split()) a = [0, x] b = [0, y] n = int(in..
2023.04.14 -
위 문제는 두 소수의 차이가 가장 작은 두 값을 출력하는 것이 관건이다. 다량의 소수를 한꺼번에 판별해서 구해야 할 경우 많은 숫자들을 소수인지 하나씩 판별하다보면 실행 시간은 한없이 길어질 것입니다. 골드바흐의 추측은 에라토스테나스의 체 개념을 이용하여 문제를 푸는 것이 간단하다. 에라토스테나스의 체 소수를 판별하는 알고리즘으로 가장 효율적인 알고리즘이다. 가장 먼저 소수를 판별할 범위만큼 배열을 할당하여, 해당하는 값을 넣어주고, 이후에 하나씩 지워나가는 방법을 이용한다. 배열을 생성하여 초기화한다. 2부터 시작해서 특정 수의 배수에 해당하는 수를 모두 지운다. (지울 때 자기자신은 지우지 않고, 이미 지워진 수는 건너뛴다.) 2부터 시작하여 남아있는 수를 모두 출력한다. 위 문제에 에라토스테네스의 ..
백준 문제풀기 [#9020번] - 골드바흐의 추측위 문제는 두 소수의 차이가 가장 작은 두 값을 출력하는 것이 관건이다. 다량의 소수를 한꺼번에 판별해서 구해야 할 경우 많은 숫자들을 소수인지 하나씩 판별하다보면 실행 시간은 한없이 길어질 것입니다. 골드바흐의 추측은 에라토스테나스의 체 개념을 이용하여 문제를 푸는 것이 간단하다. 에라토스테나스의 체 소수를 판별하는 알고리즘으로 가장 효율적인 알고리즘이다. 가장 먼저 소수를 판별할 범위만큼 배열을 할당하여, 해당하는 값을 넣어주고, 이후에 하나씩 지워나가는 방법을 이용한다. 배열을 생성하여 초기화한다. 2부터 시작해서 특정 수의 배수에 해당하는 수를 모두 지운다. (지울 때 자기자신은 지우지 않고, 이미 지워진 수는 건너뛴다.) 2부터 시작하여 남아있는 수를 모두 출력한다. 위 문제에 에라토스테네스의 ..
2023.04.14 -
문제 예제 등차수열: 두 항의 차이가 모두 일정한 수열을 뜻한다. 예를 들어 1, 3, 5, 7, 9, ...은 등차수열이다. 이때 두 항의 차이는 이 수열의 모든 연속하는 두 항들에 대해서 공통으로 나타나는 차이므로, 공차라고 한다. 예를 들어, 앞의 수열의 공차는 2이다. 문제에서는 양의 정수 X의 각 자리가 등차수열을 이룬다면 이 수를 한수라고 하였다. 예를 들면 123은 각 자리수의 차가 1씩 나고, 147은 각 자리수의 차가 3씩 난다. 이 처럼 각 자리수의 차이가 공통적인 수를 한수라고 한다. 이때 N의 수는 1부터 1000까지의 숫자로 되어있다. 문제를 풀 때 나는 경우의 수를 3가지로 나누어 풀었다. N이 1~99인 경우, 각 자리수 차이를 비교할 수 없어 모든 수가 한수에 속한다. (예를..
백준 문제풀기 [#1065번] - 한수 문제문제 예제 등차수열: 두 항의 차이가 모두 일정한 수열을 뜻한다. 예를 들어 1, 3, 5, 7, 9, ...은 등차수열이다. 이때 두 항의 차이는 이 수열의 모든 연속하는 두 항들에 대해서 공통으로 나타나는 차이므로, 공차라고 한다. 예를 들어, 앞의 수열의 공차는 2이다. 문제에서는 양의 정수 X의 각 자리가 등차수열을 이룬다면 이 수를 한수라고 하였다. 예를 들면 123은 각 자리수의 차가 1씩 나고, 147은 각 자리수의 차가 3씩 난다. 이 처럼 각 자리수의 차이가 공통적인 수를 한수라고 한다. 이때 N의 수는 1부터 1000까지의 숫자로 되어있다. 문제를 풀 때 나는 경우의 수를 3가지로 나누어 풀었다. N이 1~99인 경우, 각 자리수 차이를 비교할 수 없어 모든 수가 한수에 속한다. (예를..
2023.04.13