728x90

전체 글 270

백준 1931 <회의실 배정> Python

https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 그리디 알고리즘 문제로 리스트 정렬의 키를 지정할 수 있으면 쉽게 풀 수 있습니다. def solution(N, data_list): # 시작시간에 맞추면 최대 회의수를 구할 수 없음 # 1~4, 2~3, 3~4 가 있으면 1~4 는 1번 2~3, 3~4 는 2번 # 끝나는 시간에 맞춰 정렬해야 한다 # 끝나는 시간이 1순위, 시작시간이 2순위로 정렬 data_list = sorted(data_list, key=lambda x:(x[1], x[0])) # 끝나는 시간 end = 0 # 데이터 인덱스 idx = 0..

백준 11047 <동전 0> Python

https://www.acmicpc.net/problem/11047 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 전형적인 그리디 알고리즘 문제로 큰 동전부터 차례로 빼나가면 쉽게 풀 수 있습니다. def solution(N, K, data_list): # 거꾸로 탐색하기 위해 리버스 data_list = sorted(data_list, reverse=True) # 동전의 수 coin_num = 0 # 값이 큰 동전부터 탐색 for val in ..

CI/CD

CI/CD 개념 CI (Continuous Integration) 지속적인 통합과 CD (Continuous Delivery | Continuous Deployment) 지속적인 배포 를 합친 용어입니다. CI 는 코드의 변경 사항이 정기적으로 빌드 및 테스트되어 작업중인 레포지토리 혹은 환경에 통합되는 것을 뜻하고 CD 는 Continuous Delivery 의 경우 공유 레포지토리 혹은 환경으로 자동으로 Release 하는 것, Continuous Deployment는 자동으로 배포까지 되는 것을 의미합니다. CI 가 중요한 이유는 자동화와 테스트에 있습니다. 새로운 기능을 추가하거나 업데이트시에 매번 커밋과 머지를 해야하는 상황이 오는데, 이를 하루에 수십번씩 할 때도 있다는 점이 문제입니다. 모든..

백준 10844 <쉬운 계단 수> Python

https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 경우의 수를 나누어 DP 배열을 채워갈 수 있다면 쉽게 풀 수 있습니다. def solution(N): # DP # 열은 자릿수 # 행은 자릿수에 들어가는 숫자 memo = [[0 for _ in range(N+1)] for _ in range(10)] # 1자리는 0 빼고 다 1 이니까 채워주기 for i in range(1, 10): memo[i][1] = 1 # n+1 번째 자리에서 n 번째 자리를 고려하면 # n+1 번째 자리가 0일 경우 2 한 가지 # n+1 번째 자리가 9일경우 8 한 가지 # 나머..

백준 14501 <퇴사> Python

https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 일이 끝나는 날부터 마지막 날 까지 모든 날을 채워가며 업데이트 해야하는 점이 냅색 알고리즘(배낭문제) 와 비슷했습니다. 이 점만 생각하면 쉽게 풀 수 있습니다. def solution(N, data_list): # DP memo = [0 for _ in range(N+1)] # 일의 번호, data_list 인덱스 for work in range(N): # n 번째 시작한 일이 끝나는 날 end_day = work + data_list[work][0] # 퇴사하기 전에 끝날 경우에만 if end_day

Unity

Unity 개념 저사양 / 소규모 게임의 개발에 적합한 게임엔진입니다. 언리얼 엔진과 양대 산맥으로 게임 엔진계를 양분하고 있다고 생각할 수 있습니다. 또 단순한 게임 엔진으로 남지 않으려는 듯 Pytorch를 통해 게임 엔진속의 오브젝트에게 머신러닝을 시키는 기능을 통합할 수 있는 ML-Agent 등을 제공합니다. 장점 툴의 GUI 가 직관적이고 다양한 플랫픔으로의 빌드가 간편합니다. 요구사항도 간단하고 다양한 에셋을 에셋스토어에서 구할 수 있어 인디 게임개발자들이나 초보 개발자 등 디자인이나 AI 에 약한 직군도 비교적 저렴하게 개발을 할 수 있는 장점이 있습니다. 에셋스토어 여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘..

Unity 2023.11.04

백준 11053 <가장 긴 증가하는 부분 수열> Python

https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net https://dev-diary-0717.tistory.com/34 백준 11055 https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가하는 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가하는 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, ..

백준 9461 <파도반 수열> Python

https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 그림을 보며 규칙을 알아내기만 하면 쉽게 풀 수 있습니다. def solution(T, data_list): # 데이터 리스트 중 최댓값 max_list = max(data_list) # DP memo = [0 for _ in range(101)] # 앞부분 채우기 memo[0:6] = [1, 1, 1, 1, 2, 2] i = 6 while True: # 중단조건 if i == max_list + 1:..

React

React 개념 메타(전 페이스북) 에서 개발한 오픈소스 자바스크립트 라이브러리입니다. Angular, Vue 와 함께 큰 인기를 누리고 있습니다. 또, github star 수와 npm 패키지 다운로드 수는 React 가 가장 많다고 합니다. 또 web framework 중에서는 기본이라고 할 수 있는 node.js 와 비슷할 정도로 높은 응답률을 보였습니다. SPA(Single Page Application) 을 전제로 하고 있으며 업데이트해야 하는 DOM 요소만 부분적으로 업데이트하기 때문에 리렌더링이 잦은 동적웹에서 엄청나게 빠른 퍼포먼스를 냅니다. 또 모듈형 개발이기 때문에 생산성도 상당히 높습니다. 거기에 프레임워크가 아닌 라이브러리이기 때문에 다른 프레임워크에 붙여서 사용할수도 있어 사실상 ..

Web/FrontEnd 2023.11.03

백준 1912 <연속합> Python

https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 처음에는 누적합 알고리즘으로 풀이를 시도했다가 시간이 부족해서 다른 방식으로 접근했습니다. DP 를 두 갈래로 나누어 썼는데, 현재 인덱스를 포함하는 최댓값을 기록하는 리스트와 그냥 최댓값을 기록하는 리스트 두 가지를 나누어 최댓값 리스트가 현재 인덱스를 포함하는 리스트를 비교하며 최댓값을 최신화하게 설계했습니다. def solution(n, data_list): # 인덱스 맞춰주기 data_list = [..

728x90