이코테 문제 #dfs # 001을 =[0,0,1]의 list로 만드는 방법
//출처 https://www.youtube.com/watch?v=7C9RgOcvkvo&t=1605s 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 fun dfs(graph: MutableList, x:Int , y:Int, n:Int , m:Int): Boolean { if (x = n || y = m){ return false } if(graph[x][y]==0){ graph[x][y] = 1 dfs(graph,x-1,y,n,m) dfs(graph,x,y-1,n,m) dfs(graph,x+1,y,n..
dfs bfs
dfs 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 fun dfs(graph:MutableList,v:Int, visited:MutableList){ visited[v] = true print("$v ") for(i in graph[v]){ if(!(visited[i])){ dfs(graph, i ,visited) } } } fun main(){ // mutableListOf()는 빈 리스트를 생성하기 때문에 제너릭을 써야함 val graph = mutableListOf( mutableListOf(), mutableListOf(2,3,8), mutableListOf(1,7), mutableListOf(1,4,5), ..
백준 10872번 with Kotlin 팩토리얼 #재귀
123456789101112fun main(){ val num = readLine()!!.toInt() val ans = factorial(num) print(ans)}fun factorial(n : Int): Int { var n = n if(n==0 || n==1) return 1 return n*factorial(n-1)}Colored by Color Scriptercs
코틀린에서 stack queue 구현
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import java.util.* fun main(){ val s = Stack() s.push(5) s.push(2) s.push(3) s.push(7) s.pop() s.push(1) s.push(4) s.pop() while (!s.empty()){ print("${s.peek()} ") // 1 3 2 5 s.pop() } } Colored by Color Scripter cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import java.util.* fun main(){ var q : Queue = LinkedList() q.offer(5) q.add(2) q.poll(); // queu..
백준 1978번 소수 찾기
123456789101112131415161718192021fun main(){ val num = readLine()!!.toInt() val list = readLine()!!.split(" ").map{it.toInt()} var key = true var count =0 for(i in 0 until num){ key = true for(k in 2 until list[i]){ if(list[i]%k==0) { //println("oh ${list[i]} k: $k") key = false break } } if(key==true&&list[i]>1) {// 1은 포함하지 않게 하기 위해서 //println("oh list: ${list[i]} count: $count") count++ } } pr..
백준 나무자르기 2805번 with Kotlin #이진탐색 #이분탐색
겨우 풀었다.. 맞는거같은데 5% 시작하자 마자 오류가나서 김샜다.. // https://hsin.hr/coci/archive/2011_2012/ 대회 사이트에서 테스트케이스 다 돌려보고 문제점을 찾아냈다. 이문제에서 '적어도' 라는 말에 주목을 해야했다. 이분탐색의 반복문을 모두 돌아도 정답을 찾지 못한경우 가장 답에 가까운 해를 찾아내야한다. 그래서 코드 마지막에 Want보다 sum이 작다면 mid를 하나 줄여서 sum을 늘려줘야한다. 그렇지 않은경우에는 그냥 반복문을 통해 구한 mid를 출력하면 된다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152fun main(){ val ..
백준 1920번 수찾기 with Kotlin
수 찾기 성공 시간 제한메모리 제한제출정답맞은 사람정답 비율 2 초 128 MB 92368 29219 19043 30.628% 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 예제 입력 1..
팰린드롬수 1259번 with Kotlin
팰린드롬수 성공출처다국어 한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 128 MB 10924 6684 6026 62.297% 문제 어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다. 수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수다. 121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다. 또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만, 특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄..
좌표정렬하기 11651번 with Kotlin
좌표 정렬하기 2 성공 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 256 MB 25394 16906 14210 68.558% 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 예제 입력 1 복사 5 0 4 1 2 1 -1 2 2 3 3 예제 출력 1 복사 1 -1 1 2 2 2 ..
이진탐색
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 fun binary_search(arr:List, find: Int, start: Int, end: Int): Int { if(start>end) { return -1 } val mid = (start+end)/2 if(arr[mid]==find){ return mid } else if(arr[mid]>find){ return binary_search(arr,find,start,mid-1) } else{ return binary_search(arr,find,mid+1,end) } } fun main(){ val (num , find)= readLine()!!.s..