본문 바로가기

분류 전체보기

(62)
백준 20937번: 떡국(그리디) https://www.acmicpc.net/problem/20937 20937번: 떡국 Naver D2를 아시나요? D2는 For Developers, By Developers의 약자로, 개발자들을 위해 개발자들이 직접 만들어 가고 있는 네이버 개발자 지원 프로그램입니다. 네이버가 축적한 기술과 지식을 공유하고, 외 www.acmicpc.net INPUT: N개의 떡국 그릇을 제공 // 떡국 그릇의 크기(정수) OUTPUT: 쌓을 수 있는 최소 그릇탑의 갯수 그릇의 크기가 더 큰 것 위에만 작은 것을 올릴 수 있음. 탑의 갯수가 최소라는 것은, 최대한 높이 쌓았을 때 가능함. def solve(N, items): items = sorted(items, reverse = True) cnt = 0 tops ..
백준 20300번: 서강근육맨(그리디) 문제 요약: 서강헬스클럽은 PT 한번당 운동기구 두개만 사용 가능. 겹치지 않게 모두 한번씩 사용(홀수인 경우, 마지막 PT에서는 하나의 기구만) 운동기구마다 근손실 정도가 다르고, 근손실의 최솟값(M)을 구하라. INPUT : 운동기구의 갯수// 운동기구의 근손실을 나타내는 정수 OUTPUT: M의 최솟값 이전 문제(Project Teams) 와 다른 것은, 이전은 MIN이 MAX가 되도록 구하는 것이었는데, 이번 문제는, MAX가 MIN이 되도록 구하는 것이라는 점이다. def solve(N, items): items = sorted(items) groups = [] if N%2==1: groups=[[items[i],items[N-2-i]] for i in range(N//2)]+[[items[-1..
백준 20044 : Project teams(그리디) https://www.acmicpc.net/problem/20044 20044번: Project Teams 입력은 표준입력을 사용한다. 입력의 첫 번째 행에는 팀 수를 나타내는 양의 정수 n(1 ≤ n ≤ 5,000)이 주어진다. 그 다음 행에 학생 si 의 코딩 역량 w(si)를 나타내는 2n개의 양의 정수가 공백으로 www.acmicpc.net 나눌 팀의 수가 정해지고, 학생들의 코딩 실력이 정해진다. 가장 실력의 합이 낮은 팀의 코딩 실력이 가장 크게 조를 구성해라. INPUT : 팀의 수 // 학생들의 코딩 실력 OUTPUT : 가장 실력이 낮은 팀의 코딩실력 합 문제 풀이: 꼭 2인이서만 팀을 짜야 하기 때문에 가장 낮은 순과 가장 높은 순을 묶어주면 된다. def solve(N, student..
백준 16162 : 가희와 3단 고음(그리디) https://www.acmicpc.net/problem/16162 16162번: 가희와 3단 고음 첫째 줄에 참가자들의 음의 개수를 나타내는 정수 N(1 ≤ N ≤ 2 x 104), 고음의 첫 항과 공차를 의미하는 정수 A, D(1 ≤ A, D ≤ 107)가 공백으로 구분되어 주어진다. 둘째 줄에 참가자들의 음을 www.acmicpc.net 문제 요약: 대회에서는 처음 음(A), 공차(D) 대로 쌓은 고음만 n단 고음으로 처리해준다. 참가자들이 부른 N개의 음에서 정해진 규칙대로 쌓은 고음의 단수를 찾아라. INPUT : N, A, D // 참가자가 부른 음 N개 OUTPUT : 참가자의 고음 단수 D만 정해져있다면 어려웠을텐데, A가 정해져 있어서 쉬웠다. for문을 돌면서 그 다음 항에 나올 음이 ..
백준 13413번 : 오셀로 재배치(그리디) 문제 요약: 흑 또는 백 이루어진 로봇을 흑백 교차하는 로봇으로 변형하는 것. 두가지 작업 중 하나를 골라 진행할 수 있다. 1. 배치된 말 중 임의의 2개의 말을 골라 서로의 위치를 바꾼다. 2. 말 1개를 들어 뒤집어 놓아 색상을 변경한다. INPUT: 각 테스트 케이스 당: 말의 갯수, 초기 상태, 목표 상태 OUTPUT : 필요한 작업 최소횟수 풀이: summ에서는 알파벳이 다른 위치의 총 갯수를, subt에서는 'B'-->'W'인 경우와 'B'-->'W'인 경우를 부호가 반대로 되게 표시해줌. sum(subt)를 통해, 1, -1인 자리들은 합쳐서 0이 됨. 즉, 자리 교환. 남은 1 또는 -1들의 갯수가 뒤집어야 하는 갯수. def solve(ini, fin): ini_int = [int(i ..
백준 13305 : 주유소(그리디) https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 문제 요약: 어떤 나라에 일직선 도로 위에 N개의 도시가 있다. 차로 이동하려고 한다. 기름통의 크기는 무제한, 1키로에 1리터 사용. 도시마다 단 하나의 주유소가 있으며, 주유소의 기름 가격은 상이. INPUT : 도시에 있는 주유소의 기름 가격, 도로의 길이 OUTPUT: 제일 왼쪽 도시에서 오른쪽 도시로 이동하는 최소의 비용 처음 풀이: 58점이 나왔다. 서브태스크 2까지는 도..
인공신경망은 어떻게 학습하는가? 저번 포스팅에서는 인공신경망이란 거대한 함수와 같다는 것을 설명했습니다. 이번 포스팅에서는 컴퓨터가 그 거대한 함수가 우리가 원하는 함수가 되도록 만드는 지에 대한 기법과 과정을 살펴보도록 하겠습니다. 우선, 거대한 함수의 입력값과 그에 따른 우리가 원하는 출력값을 정해주어야 합니다. 이전 포스팅의 예시를 이어서 가져오면, 함수의 입력값은 이미지, 출력값은 0~9 사이의 숫자가 될 것입니다. 즉, 왼쪽 그림과 같은 쌍으로 이미지를 만들어서 컴퓨터가 학습해야 할 정답을 알려주는 것입니다. 출력에 해당하는 정답들을 라벨(label)이라 하고, 학습에 필요한 정답이 있는 데이터를 labeled data, labeled data로 학습시키는 것을 지도학습(supervised learning)이라고 합니다. 가지..
인공신경망(Artificial Neural Network)에 관하여 인공신경망(Artificial Neural Network)은 머신러닝 알고리즘의 기본 매커니즘입니다. 처음 인공신경망을 접할 때, 알고리즘과 용어들이 혼동 됐었는데, 직관적인 이해를 하는 데 도움이 되었던 내용을 정리해보고자 합니다. 다른 용어 정리와 같이 공부하시는 분들에게 참고가 되길 바라며, 용어는 굵은 글씨로 표시해두었습니다. 신경망이란, 인간의 뇌가 학습하는 과정을 착안한 것입니다다. 의학적인 정보를 모르기에 실제로 얼마나 비슷한 지 모르겠으나, 인공신경망의 핵심은 "뉴런"들이 상호작용을 통해 학습해 간다는 공통점이 있다고 합니다. 인공신경망은 입력과 출력이 있는 하나의 거대한 함수라고 볼 수 있습니다. 인공신경망이 학습한다는 것은 인풋에 대해 우리가 원하는 아웃풋을 내도록 함수를 만들어 가는 ..