일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 2020
- heap
- lastIndex
- programmers
- 동적계획법
- Recursion
- 2D Array
- PriorityQueue
- Queue
- hackerrank
- solution
- indices
- GREEDY
- contentToString
- 프로그래머스
- sortedBy
- Java
- Poll
- 알고리즘
- dynamic programming
- foreach
- 코틀린
- Kotlin
- Util
- report
- Developer
- dp
- intarray
- booleanarray
- Main
- Today
- Total
목록분류 전체보기 (37)
Code in
프로젝트 소개 아이랑 프로젝트는 AI의 창작능력과 관련한 산학 프로젝트이다. AI의 발전에 따라 그 창작능력에 대한 연구가 많은 곳에서 진행되어왔다. 과연 AI는 인간과 비슷한 창작능력을 가질 수 있을까? 우리 팀에서는 이에 대한 해답으로 아이랑 프로젝트, AI로 동요 작사작곡하기 를 진행하고 있다. 작사에는 가장 성능이 좋다고 판단한 GPT-3를 사용하였고, 작곡에는 구글의 Magenta 프로젝트의 chord-pitches-improv를 사용하였다. Magenta는 LSTM(RNN)을 사용한다. Cell-state가 있고, 이를 반복적으로 업데이트 하는 것이다. GPT-3는 In-context learning을 하는 meta learning을 진행하였다. zero-shot, one-shot, few-s..
AI 동요 창작 서비스 개발 프로젝트를 이번 9월에 기획, 진행하고 있습니다. '프로젝트 AI랑'에서는 비기술적인 내용이, '작사 AI 팀'에서는 기술적인 내용이 작성되어 있습니다. AI랑 [아이랑] : AI 동요 창작 서비스 프로젝트 AI랑 1. 프로젝트의 주제 선정 이유 문제 정의 AI가 예술분야의 창작에 진입하였지만 아직 작곡, 작사에 대한 AI 활용은 부족하여 AI 창작 이후 사람의 편집을 거치는 형태입니다. 또한, 동요의 경우는 K-POP등의 장르와 다르게 그 생산 주체가 보다 한정되어 있다는 문제점이 있습니다. 따라서 AI가 동요를 작곡, 작사하는 프로그램을 개발하고자 합니다. 작사/작곡으로 팀을 나누어서 동시에 진행하고 있습니다. 2. 진행 내용 9월 지도교수님과의 면담 이후, 동요 창작 A..
DSC 활동을 하면서, 알고리즘 스터디를 통해 문제 풀이를 지속하게 되었다. URL: programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr [카카오 인턴] 키패드 누르기 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입..
** 중간에 Intelli J Kotlin을 업데이트하고 나서 에러가 났었는데 에러 내용: Kotlin: [Internal Error] java.rmi.UnmarshalException: ~~~ Build -> Rebuild Project 하고 나서 에러가 해결됐어요! 프로그래머스 해시부분 위장 문제입니다. IntelliJ에서의 풀이입니다. Hash를 쓰려고 노력했습니다! 실제로 HashMap을 출력하면 다음 처럼 출력됩니다. {-1290360528=1, -1115211921=2} {3135069=3} val clothes: Array = arrayOf( arrayOf("yellow_hat", "headgear"), arrayOf("blue_sunglasses", "eyewear"), arrayOf("g..
프로그래머스 깊이/너비 우선 탐색 여행경로 문제입니다. 프로그래머스에서의 풀이입니다. import java.util.Stack class Solution { val path: MutableList = mutableListOf() val stack: Stack = Stack() fun solution(tickets: Array): Array { tickets.sortWith(compareBy({ it[0] }, { it[1] })) val usedTicket = BooleanArray(tickets.size) { false } for (i in tickets.indices) { if (tickets[i][0] == "ICN") { usedTicket[i] = true stack.push("ICN") sta..
Graph 그래프는 Vertices 정점과 이들을 연결하는 Edge 간선으로 이루어집니다. 정점 u, v를 연결하는 간선은 (u, v)로 표현됩니다. 정점은 Vertex, Node로 부를 수 있습니다. 무방향에서는 (u, v)와 (v, u)가 동일합니다. 두 정점을 가장 적은 수의 Edge로 연결하는 경로를 Shortest Path라고 합니다. 어떤 정점에서 시작하여 다시 자신에게 돌아오는 경로가 있을 경우 이를 Cycle이라고 합니다. 각 간선 Edge마다 가중치 Weight 가 존재하는 경우에는 가중 그래프 Weighted Graph라고 부릅니다. 가중 그래프에서는 가중치의 합이 가장 적은 경로를 Shortest Path라고 합니다. 방향이 있는 그래프는 방향 그래프 Directed Graph라고 합..
이진 탐색 Binary Search 이진 탐색은 한번 비교를 할 때마다 탐색 범위가 절반으로 줄어든다. 정렬된 배열을 전제로 탐색한다. 1 3 5 7 9 11 13 위와 같은 정렬된 배열에서 Binary Search 이진 탐색을 적용하여 9 를 탐색하는 경우를 생각할 수 있다. 정렬된 배열의 중앙 요소를 선택한다. 선택된 값과 찾고자 하는 값을 비교하여 왼쪽 혹은 오른쪽 중 어느 방향으로 탐색을 진행할지를 정한다. 위의 과정을 반복한다. 남은 탐색 값은 9가 남고, 찾고자 하는 값과 일치하므로 탐색을 끝마친다. 이진 탐색 성..
해시 함수는 어떤 길이의 데이터를 입력해도 정해진 길이의 결괏값을 준다. 데이터를 저장하는 방식으로 볼 때, 해시 함수에는 다양한 방식이 있다. Direct-address tables Direct-address tables는 크기가 U인 테이블 T를 생성하고 key K를 slot K에 저장하는 방식이다. 이때 중복되는 key는 없다고 가정한다. 전체 크기가 U인 곳에서 actual key K가 존재한다고 생각한다. 해당되는 데이터를 table에 저장하고 필요한 key값과 그에 해당하는 data를 확인하는 자료구조이다. 해당 방식은 수행 시간이 매우 짧다는 장점이 있다. key값을 알고 있으면 table에서 바로 data를 찾을 수 있기 때문이다. 하지만 공간 복잡도 측면에서는 실제 사용 공간이 적어 공간..
프로그래머스 깊이/너비 우선 탐색 단어 변환 문제입니다. IntelliJ에서의 풀이입니다. import java.util.* val begin = "hit" val target = "cog" val words = arrayOf("hot", "dot", "dog", "lot", "log", "cog") fun solution(begin: String, target: String, words: Array): Int { var answer = 0 if (!words.contains(target)) return 0 val que:Queue = LinkedList() words.forEach { que.add(it) } var curstr: String = begin var quep: String = que.po..
프로그래머스 깊이/너비 우선 탐색 네트워크 문제입니다. IntelliJ에서의 풀이입니다. val n = 3 val computers = arrayOf(intArrayOf(1, 1, 0), intArrayOf(1, 1, 0), intArrayOf(0, 0, 1)) val computers2 = arrayOf(intArrayOf(1, 1, 0), intArrayOf(1, 1, 1), intArrayOf(0, 1, 1)) fun solution(n: Int, computers: Array): Int { var answer = 0 val visited = Array(n) { BooleanArray(n){false} } for (i in 0 until n){ if (!visited[i][i]){ network(c..