CT With Kotlin

[내배캠 - 오늘의 문제] https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr map에서 값을 추가할 때, key값이 존재하는지 체크하고 없다면 init / 있으면 값을 추가하는 로직(if-else 또는 if)을 많이 짰었는데 좋은 메서드를 발견해서 리뷰와 getOrPut() 메서드의 간단한 분석을 해볼까 한다. val reportUser = mutableMapOf() // 키가 있는지 체크하고 없으면 init 셋업 해주고 그 뒤 add 하는 코드..
[내배캠 - 오늘의 문제] https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 base. 입력받은 Array의 값을 순회하며 stack에 쌓는다. 문제 접근 point1. stack의 peek()값이 1일 때, 상위 4개의 요소를 뽑아 "1321"과 같은지 비교한다. 같다면, answer++ 및 stack.pop() * 4번 수행 코드는 아래와 같다. (길어서 접어둠) 더보기 // Stack 버전 class Solution { fun ..
[내배캠 - 오늘의 문제] https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 테스트 케이스 11~15에서 시간 초과 Error가 발생하여 로직을 계속 수정(시간초과 -> 600ms -> 300ms -> 230ms)하면서 결국 해결했는데 MutableList로 선언한 변수를 IntArray로 변경하니 230ms -> 60ms로 많은 시간 단축 효과가 있었다. 그래서 MutableList와 IntArray의 속도 차이를 간단히 리뷰해보려 한다. v..
[내배캠 - 오늘의 문제] https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제의 point1. 1부터 n(최대 100,000)까지의 순회하며 i가 가진 약수의 개수를 구한다. 문제의 point2. 각 개수가 limit 보다 크다면 power 값으로 대체해야함 이후 sum해서 return 0. 처음의 접근 방식 2중 for문을 돌며, O(N^2)의 로직을 돌림 -> 시간 초과 1. 약수를 구할 때, 제곱근을 이용하여 시간 단축시킴 O(N) *..
[내배캠 - 오늘의 문제] 문제의 point1. n개의 요소중 3개를 뽑는 로직 // Time: 5.99 ms, Memory: 61.2 MB class Solution { val combinationNumbers = mutableListOf() val combinationGroup = mutableListOf() lateinit var numbersBackup: IntArray fun solution(nums: IntArray): Int { // 1. 주어진 배열에서 3개씩 뽑는다. numbersBackup = nums combination(0, 0) // 2. 1차원 배열끼리 합한다. / 그 합한 수가 소수인지 판별한다. return combinationGroup.map { numbers -> numb..
[내배캠 - 오늘의 문제] 문제의 point1. roof를 돌며 socre와 최소값과 비교하여 최소값을 밀어내고, socre를 배열에 넣어야 한다. 문제의 point2. roof를 돌 때마다, K개의 요소중 최소값을 뽑아내야 한다. import java.util.PriorityQueue class Solution { fun solution(k: Int, scores: IntArray): IntArray { val answer = IntArray(scores.size) val pq = PriorityQueue() for((index, score) in scores.withIndex()) { if(pq.size pq.peek()) { pq..
// Time: 24.29 ms, Memory: 64 MB fun solution(food: IntArray): String { var answer = StringBuilder() var round = 1 // 첫 번째 인덱스를 제외하고 roof 돌리기 food.sliceArray(IntRange(1, food.size - 1)).map { val canFoodCountByRound = it / 2 answer.append((round.toString()).repeat(canFoodCountByRound)) round += 1 if (round == food.size) { val answerBackup = answer.reversed() answer.append(0) answer.append(answer..
내가 코딩한 아래 s1 메서드의 성능이 안 좋은 이유에 대해서 배운점을 리뷰해보려 한다. // s의 길이가 10000일 때, 100.0ms / 197MB fun solution1(s: String): IntArray { var answer: IntArray = intArrayOf() var nearIndex = mutableMapOf() for ((index, ch) in s.withIndex()) { val isContainsKey = nearIndex.containsKey(ch) answer += if(isContainsKey) index - nearIndex[ch]!! else -1 nearIndex[ch] = index } return answer } // s의 길이가 10000일 때, 0.74m..
탱구리몬
'CT With Kotlin' 카테고리의 글 목록