알고리즘 (18) 썸네일형 리스트형 프로그래머스 길 찾기 게임 class Solution { fun solution(nodeinfo: Array): Array { val list = ArrayList() for (i in nodeinfo.indices) { val info = nodeinfo[i] list.add(Point(info[0],info[1], i+1)) } list.sort() val binary = Binary(Node(list[0])) //이진트리 루트 for (i in 1 until list.size) { binary.insert(list[i]) //인지트리의 넣기 } binary.preOrder(binary.root) binary.postOrder(binary.root) val answer = arrayOf(binary.preList.toIntAr.. 프로그래머스 가사검색 코틀린 class Solution { fun solution(words: Array, queries: Array): IntArray { val answer = IntArray(queries.size) val root = Trie() val tail = Trie() //역으로 탐색하기 위해 for (word in words) { root.insert(word) tail.insert(word.reversed()) //역으로 입력 } for (i in queries.indices) { if (queries[i][0]!='?') { answer[i] = root.find(queries[i]) } else { answer[i] = tail.find(queries[i].reversed()) } } retur.. 카카오 블라인드 2020 문자열 압축 코틀린 fun solution(s: String): Int { val length = s.length var min = length val mid = length/2+1 for (cnt in 1 until mid+1) { //압추크기가 반을 넘을 수 없어서 var len = length var i =cnt var num = 1 while (i=length-cnt+1 &&num!=1) { len+= num.toString().length //마지막에 중복 숫자를 더해줌 } } if (min>len) { min =len } } return min } 백준 1806 부분합 코틀린 import java.io.BufferedReader import java.io.InputStreamReader import java.util.* var start = 0 var min = Int.MAX_VALUE var sum = 0 fun main(args: Array) { val br = BufferedReader(InputStreamReader(System.`in`)) val line = br.readLine() val n = line.split(" ").toTypedArray()[0].toInt() val m = line.split(" ").toTypedArray()[1].toInt() val arr = IntArray(n) val st = StringTokenizer(br.readLine()).. 백준 2003 투포인터 수들의 합2 코틀린 import java.io.BufferedReader import java.io.InputStreamReader import java.util.* var start = 0 var count = 0 var sum = 0 fun main(args: Array) { val br = BufferedReader(InputStreamReader(System.`in`)) val line = br.readLine() val n = line.split(" ").toTypedArray()[0].toInt() val m = line.split(" ").toTypedArray()[1].toInt() val arr = IntArray(n) val st = StringTokenizer(br.readLine()) for (i in.. dfs 프로그래머스 네트워크 //접근 방법 : dfs로 연결이 된 부분(1)을 전부 찾는다. //컴퓨터와 연결되 있는 네트워크를 찾고 answer에 값을 증가 시킨다. //이미 연결이 이루어진 곳은 visited의 true를 통해 재 방문 하지 않는다. fun solution(n: Int, computers: Array): Int { var answer = 0 val visited = BooleanArray(computers.size) for (i in computers.indices) { if (!visited[i]) { answer++ dfs(i, visited, computers) } } return answer } private fun dfs( index: Int, visited: BooleanArray, computers:.. 스택) 백준 9935번: 문자열 폭발 코틀린 https://www.acmicpc.net/problem/9935 fun main(args: Array) { val br = BufferedReader(InputStreamReader(System.`in`)) val text = br.readLine() val input = br.readLine() val sb = StringBuffer() val st = Stack() for (i in text.length - 1 downTo 0) { st.push(text[i]) if (st.size >= input.length && st.peek() == input[0]) { if (input.length == 1) { st.pop() } for (j in 1 until input.length) { if (st.s.. 프로그래머스 기능개발 코틀린 class Solution { fun solution(progresses: IntArray, speeds: IntArray): IntArray { val times = arrayOfNulls(progresses.size) val list = ArrayList() for (i in progresses.indices) { times[i] = if ((100-progresses[i])%speeds[i]==0) (100-progresses[i])/speeds[i] else (100-progresses[i])/speeds[i] +1 } var value = 1 var start = times[0] for (i in 0 until times.size-1) { if (start!!>=times[i+1]!!) { va.. 이전 1 2 3 다음