분류 전체보기 462

[알고리즘] 백준 2512 파이썬 - 예산

2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 문제 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정한다. 상한..

[알고리즘] 백준 2217 파이썬 - 로프

2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 문제 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때,..

빅데이터와 머신러닝 (지도학습, 비지도학습, 강화학습)

1. 빅데이터 직종별 머신러닝의 중요도 1. 데이터 사이언티스트, 데이터 리서처 - 모델을 만드는 것이 주업무인 데이터 사이언티스트와 리서처는 머신러닝 모델을 만들고 발전시키는 데 많은 시간을 할애한다. 따라서 머신러닝 기법과 모델 구축 알고리즘에 대한 지식은 필수다. 또한 머신러닝 프로세스 지식도 갖추고 있어야 한다. 해당 지식이 없으면 좋은 모델을 만들기 어렵고, 새로운 알고리즘을 구성해 실제로 구현할 수 있는 프로그래밍 실력을 갖췄더라도 모델 구축을 둘러싼 전반적인 흐름과 논리를 이해하거나 전개하지 못하게 된다. 2. 데이터 애널리스트 - 데이터 애널리스트는 주로 애널리틱스 도구나 머신러닝 패키지에 내장된 몇 개의 기법 중 하나를 선택해 모델을 만들게 된다. 따라서 모델을 만드는 알고리즘의 내부 작..

빅데이터 전문가는 수학 및 통계학을 알아야 할까?

1. 각 직종별 수학 및 통계학이 필요한 이유 - 데이터 애널리스트는 기성 소프트웨어를 사용하기에 새로운 모델을 개발하는 경우는 흔하지 않다. 따라서 데이터 애널리스트는 기성 소프트웨어가 내장하고 있는 데이터 분석 알고리즘을 공부하고, 내부 기작을 이해하는데 시간을 더 할애해야 한다. 반면 통계학은 공부한 만큼 데이터 애널리스트에게 도움이 된다. 데이터를 활용해 조직의 현재 상황을 진단하는 역할을 맡을 때를 보면, 통계 모델링과 결과 분석 방법, 가설 검정 등의 내용을 바탕으로 경영진에게 자신의 의견을 피력할 수 있는 적극적인 데이터 애널리스트가 되기 위해서 통게학 공부가 필요하다. - 데이터 사이언티스트나 데이터 리서처는 수학, 통계학, 정보 이론의 내용을 숙지하고 있어야 한다. 논문을 이해하거나 논문..

[알고리즘] 백준 2485 파이썬 - 가로수

2485번: 가로수 첫째 줄에는 이미 심어져 있는 가로수의 수를 나타내는 하나의 정수 N이 주어진다(3 ≤ N ≤ 100,000). 둘째 줄부터 N개의 줄에는 각 줄마다 심어져 있는 가로수의 위치가 양의 정수로 주어지며, 가 www.acmicpc.net 문제 직선으로 되어있는 도로의 한 편에 가로수가 임의의 간격으로 심어져있다. KOI 시에서는 가로수들이 모두 같은 간격이 되도록 가로수를 추가로 심는 사업을 추진하고 있다. KOI 시에서는 예산문제로 가능한 한 가장 적은 수의 나무를 심고 싶다. 편의상 가로수의 위치는 기준점으로 부터 떨어져 있는 거리로 표현되며, 가로수의 위치는 모두 양의 정수이다. 예를 들어, 가로수가 (1, 3, 7, 13)의 위치에 있다면 (5, 9, 11)의 위치에 가로수를 더 ..

[알고리즘] 백준 5430 파이썬 - AC

5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. 예를 들어, "RDD"는 배열을 뒤집은 다음 처음 두 수를 버리는 ..

[알고리즘] 백준 1158 파이썬 - 요세푸스 문제

1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 문제풀이 n,k = map(int,input().split..

순환 신경망(RNN)을 이용한 주가 예측 (Feat. LSTM)

1. 주의사항 - 이 포스팅은 단순히 딥러닝 기술인 순환 신경망을 이용하여 주가 예측을 하는 원리를 설명하고 있다. 그렇기에 완성품을 설명하는 것이 아닌 주가 예측의 기본을 설명하는 것으로, 참고만 하는 것을 추천한다. 2. 순환 신경망(RNN) - 순환 신경망에서 뉴런을 셀이라고도 부르는데, 이전의 데이터를 통해 학습된 셸의 상태 정보가 다음 데이터를 이용하여 학습시킬 때 다시 사용된다는 의미다. 셀에서 만들어지는 상태 데이터를 은닉 상태라고 한다. 활성화 함수로 쌍곡탄젠트 함수를 사용하여 계산할 수 있다. 셀에서 사용하는 이전의 은닉 상태는 과거 문맥에 관한 정보를 가지고 있어서 앞으로 발생할 데이터를 예측하는 데 활용된다. 3. 장단기 기억(LSTM) - 데이터들의 연관 정보를 파악하려면 기억을 더..

[알고리즘] 백준 10867 파이썬 - 중복 빼고 정렬하기

10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다. 문제풀이 int(input()) List = list(map(int,input().split())) a=[] for i in List: if(i not in a): a.append(i) a.sort() print(*a) - 입력받은 값이 a 리스트에 있지 않으면 추가한다. - a 리스트를 오름차순으로 정렬한다. - a 리스트를 한 줄에 출력한다.

[알고리즘] 백준 1181 파이썬 - 단어 정렬

1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 문제풀이 import sys input = sys.stdin.readline A=[] for _ in range(int(input())): a = input().rstrip() if a not in A: A.append(a) A.sort() A.sort(key=len) for i in A: pri..