본문 바로가기

모각코(모여서 각자 코딩)

(19)
[2020모각코] 6회차 2021.01.27(목표) 6회차 모각표 목표 5회차에 공부했던 Greedy Algoalgorithm을 이용하여 아래의 백준 알고리즘 문제를 풀어보며 개념을 확립시킨다. 1541번: 잃어버린 괄호 (acmicpc.net) 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 1931번: 회의실 배정 (acmicpc.net) 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net
[2020모각코] 5회차 2021.01.20 Greedy Algoalgorithm이란 문제를 해결하는 과정에서 전체에서의 최적이 아닌 그 순간순간마다 최적이라고 생각되는 결정을 하는 방식으로 진행하여 최종 해답에 도달하는 방식이다. 거스름돈의 최대값이 500엔이고 500엔에서 100엔 ,50엔 ,10엔 ,5엔 ,1엔 으로 줄어들게 된다. /5, /2 연산이 반복해서 이루어지고 있으으모 boolean자료형을 이용하여 잔돈의 값을 자동으로 계산해 주었다. 동전의 갯수가 최소가 되기 위해선 가장 큰 잔돈부터 계산하면 동전의 갯수가 최소가 되게 된다. 따라서 가장 큰 잔돈인 500엔부터 계산을 하여 동전의 최소 갯수를 구하였다. 첫번째 도시에서는 무조건 기름을 넣어야 하기 때문에 첫번째 도시의 가격을 기준으로 프로그램을 작성하였다. 현재 기름 가격과 다음..
[2020모각코] 5회차 2021.01.20(목표) 5회차 모각표 목표 Greedy Algoalgorithm에 대해 이해하고 아래의 백준 알고리즘 문제를 풀어보며 개념을 확립시킨다. www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net 13305번: 주유소 (acmicpc.net) 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 ..
[2020모각코] 4회차 2021.01.13(목표) 4회차 모각표 목표 3회차에 공부했던 Dynamic Programmin(동적 계획법)을 이용하여 백준 알고리즘 문제를 풀어보며 개념을 확립시킨다. www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net 12865번: 평범한 배낭 (acmicpc.net) 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째..
[2020모각코] 3회차 2021.01.05 동적 계획법(Dynamic Programming)이란 주어진 문제를 작은 여러 개의 문제로 나누어서 풀 때 같은 문제들을 반복해서 푸는 경우가 생긴다. 그런 경우 그 문제들을 매번 재계산 하는것이 아니라 값을 저장해 두었다가 재사용하는 기법이다. 문제를 보면 정수 x에 사용할 수 있는 연산 중 하나가 1을 빼는 연산이다. 따라서 bottom-up방식으로 문제를 해결해 나가야 한다고 생각하였다. a라는 배열을 만들어 1로 만드는데 필요한 연산의 횟수를 저장하여 문제를 해결하였다. sum이라는 변수를 통해 연속된 숫자의 합을 저장하였다. sum이 0보다 작게 되는 경우 그 부분순열을 연속합을 최대로 만들어 줄 수 없기 때문에 그 다음 값으로 새로운 부분순열을 만들어 주었다. sum1 변수에는 이전까지의 최대..
[2020모각코] 3회차 2021.01.05(목표) 3회차 모각표 목표 Dynamic Programmin(동적 계획법)에 대해 이해하고 아래의 백준 알고리즘 문제를 풀어보며 개념을 확립시킨다. www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net
[2020모각코] 2회차 2020.12.30 분할정보(Divide and Conquer)이란 주어진 문제를 작은 사례로 나누고(Divide) 각각의 작은 문제들을 해결하여 정복(Conquer)하는 방법이다. 분할정복법은 문제의 사례를 2개 이상의 더 작은 사례로 나누어 문제를 해결한다. n이 1인 경우 즉 더 이상 나누어지지 않는 경우 최소 크기의 종이가 되므로 종이의 갯수에 바로 더해주었다. 만약 n이 1이 아니라면 종이가 더 나누어 질 수 있으므로 같은 종이로 구성되었는지 확인해야 한다. 따라서 첫번째 종이와 다른 모든 종이를 비교하여 다른 종이가 있으면 체크 해 주었다. 다른 종이가 없는 경우 같은 종이로 이루어져 있기 때문에 맞는 종이의 숫자를 더해주었다. 만약 다른 종이가 있는 경우 해당 종이를 3*3의 종이로 다시 나누어 주면서 위의 과..
[2020모각코] 2회차 2020.12.30(목표) 2회차 모각표 목표 분할정복 알고리즘에 대해 이해하고 아래의 백준 알고리즘 문제를 풀어보며 개념을 확립시킨다 1780번: 종이의 개수 (acmicpc.net) 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다...