본문 바로가기

전체 글

(96)
[프로그래머스] 괄호 회전하기 with Kotlin 문제 괄호들이 문자열 s에 담겨있으며, 문자열 s를 왼쪽으로 한칸씩 이동시킬 때, 올바른 괄호들만 있는 문자열 s가 몇 개인지 구하는 문제 풀이 과정 StringBuilder() 로 문자열 회전 열림 괄호는 + , 닫힘 괄호는 -로 Map에 저장 후 - 값이 나왔을 때 이전 인덱스의 값과 더해 0이면 정상 괄호 0이 아니면 비정상 코드 class Solution { fun solution(s: String): Int { var answer: Int = 0 val sb = StringBuilder(s) val map : Map = mapOf( Pair('[', 1), Pair(']', -1), Pair('{', 2), Pair('}', -2), Pair('(', 3), Pair(')', -3)) for(i..
[프로그래머스] 귤 고르기 with Kotlin 문제 다양한 크기의 종류의 귤이 있을 때, 귤의 종류를 최소로 하여 N개를 담고 싶어한다. 이 때, 담을 수 있는 최소한의 귤의 종류의 개수를 반환하는 문제 풀이 과정 귤의 종류별 개수를 구한 뒤 개수가 많은 순으로 내림차순 K개에서 빼주면서 카운팅 코드 class Solution { fun solution(k: Int, tangerine: IntArray): Int { var answer: Int = 0 var K = k val list = tangerine.groupBy{it}.values.map{it.size}.sortedDescending() for(i in list){ if(K
[프로그래머스] 멀리 뛰기 with Kotlin 문제 한 번에 1칸 또는 2칸 뛸 수 있으며, 칸이 N으로 주어졌을 때 N까지 뛸 수 있는 모든 경우의 수의 개수를 반환하는 문제 풀이 과정 1칸 : 1 2칸 : 2 3칸 : 3 4칸 : 5 5칸 : 8 다음과 같은 규칙으로 증가하는 피보나치 수이므로 다이나믹 프로그래밍을 사용하여 해결할 수 있다. 코드 class Solution { fun solution(n: Int): Long { if(n == 1) return 1 val dp = Array(n){0} dp[0] = 1 dp[1] = 2 for(i in 2 until n){ dp[i] = (dp[i-1] + dp[i-2]) % 1234567 } return dp[n-1].toLong() } }