문제 이해 실패율 : 스테이지에 도달, but 클리어 하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 스테이지에 도달한 유저가 없을 경우 실패율 0 N = 전체 스테이지의 갯수 stage = 사용자가 멈춰있는 스테이지의 번호가 담긴 배열 Return -> 실패율이 높은 스테이지부터 내림차순 배열 접근 2개의 Map 작성 스테이지, 사람수 스테이지, 실패율 내림차순 정리 answer 도출 풀이 class Solution { fun solution(N: Int, stages: IntArray): IntArray { var answer = IntArray(N) val indexMap: MutableMap = mutableMapOf() // 스테이지, 사람수 val failureMap: Mutable..
문제 이해 정수 n, m 가로 n, 세로 m 직사각형 출력 접근 이 중 포문으로 찍기 풀이 fun main(args: Array) { val (a, b) = readLine()!!.split(' ').map(String::toInt) for (i in 0 until b) { for (j in 0 until a) { print("*") } println() } }
문제 이해 주어진 숫자 중 3개의 수를 더했을때 소수가 된는 경우의 개수 Return 접근 삼중 for문을 사용한 3가지 합의 경우의 수 구하기 플래그 + 합이 소수인지 판별해서 answer++ 풀이 class Solution { fun solution(nums: IntArray): Int { var answer = 0 for (i in 0 until nums.size - 2) { for (j in i + 1 until nums.size - 1) { for (k in j + 1 until nums.size) { var sum = nums[i] + nums[j] + nums[k] var flag = 0 for (l in 2 until sum) { if (sum % l == 0) { flag = 1 brea..
문제 이해 Input : x, n Return x ~ x 씩 증가 n개 array 접근 리스트 만든후 n개만큼 반복 i (index)를 곱해서 배열에 넣어줌 풀이 class Solution { fun solution(x: Int, n: Int): LongArray { val answer = mutableListOf() for (i in 1..n) { answer.add(x.toLong() * i) } return answer.toLongArray() } } 다른 사람의 풀이 class Solution { fun solution(x: Int, n: Int): LongArray = LongArray(n) { x.toLong() * (it + 1) } }
문제 이해 행렬의 덧셈 ( 행과 열이 같다 ) 접근 두개의 mapIndexed 함수를 활용하여 각각 더해준다음 반환시킨다 풀이 class Solution { fun solution(arr1: Array, arr2: Array): Array { var answer = arrayOf() answer = arr1.mapIndexed { indexArr, ints -> ints.mapIndexed { indexInts, i -> i + arr2[indexArr][indexInts] }.toIntArray() }.toTypedArray() return answer } }
문제 이해 Return phone_number 뒷자리 제외 " * " 접근 리스트 생성 for문 돌려서 마지막 숫자를 제외한 값에는 * 삽입 풀이 class Solution { fun solution(phone_number: String): String { var answer = arrayListOf() for (i in phone_number.indices) { if (i < phone_number.length - 4) { answer.add("*") } else { answer.add(phone_number[i].toString()) } } return answer.joinToString("") } } 다른 사람의 풀이 fun solution(phone_number: String): String { ..
문제 이해 x % ( x 자릿수의 합 ) == 0 -> 하샤드 Return true/false 접근 map으로 x를 배열화 시켜 요소값의 합을 구해 자리값의 합을 구한다 나눠서 0이 되는 값의 합을 구한다 -> 비교 풀이 class Solution { fun solution(x: Int): Boolean { var answer = true var sum = 0 x.toString().map { sum += (it.toInt() - '0'.toInt()) } return x % sum == 0 } } 다른 사람의 풀이 class Solution { fun solution(x: Int): Boolean { return x % x.toString().fold(0) { acc, c -> acc + c.toInt..
문제 이해 1. 짝수라면 2로 나눔 2. 홀수라면 3을 곱하고 1 더함 3. 같은 작업을 1이될때까지 반복 접근 1이 될때까지 분기 나눠주기 count 500 되는 순간 return 풀이 class Solution { fun solution(num: Int): Int { var longNum = num.toLong() var count = 0 while (count 1) { count ++ longNum = if (longNum % 2 == 0L) longNum / 2 else longNum * 3 + 1 } return if (count == 500) -1 else count } } 다른 사람의 풀이 class Solution { fun solution(num: Int..
문제 이해 두수 n, m 최대 공약수 / 최소공배수 반환 : Array 접근 최대 공약수 함수 작성 유클리드 호제법 나눴을때 나머지가 0이 될때까지 재귀 함수 돌리기 최소 공배수 함수 작성 두수의 곱 / 최대공약수 return 풀이 class Solution { fun solution(n: Int, m: Int): IntArray { return intArrayOf(gcm(n, m), lcm(n, m)) } fun gcm(a: Int, b: Int): Int { var maximum = max(a, b) var minimum = min(a, b) if (minimum == 0) { return maximum } else { return gcm(minimum, maximum % minimum) } } fu..
문제 이해 엄지손가락만으로 터치 왼손 * 시작 오른손 # 시작 상하좌우 이동 2580 의경우에는 현재 왼손, 오른손 위치중 가까운 손으로 터치 접근 숫자의 좌표화(거리 비교) , but 거리는 안구해도됨 Pair의 함수 추가 if 분기 나누고 거리 비교 하기 풀이 import kotlin.math.abs fun main() { val data = intArrayOf(1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5) val data1 = "right" println(Solution().solution(data, data1)) } class Solution { fun solution(numbers: IntArray, hand: String): String { var answer = "" val ma..
문제 이해 정수 저장 arr 에서 가장 작은 수 제거한 배열 Return 빈 배열일 경우(1~0) -> -1 채워 Return 접근 size 체크 -> -1 반환 filter 사용해서 min 값 걸러내기 풀이 class Solution { fun solution(arr: IntArray): IntArray = if (arr.size == 1) intArrayOf(-1) else arr.filter { it != arr.min() }.toIntArray() }
문제 이해 양의 정수 n 이 임이의 수의 제곱인지 판단 제곱 -> x+1의 제곱 제곱X -> -1 접근 sqrt 사용, 형식 맞추기 제곱근 확인 후 Return 풀이 class Solution { fun solution(n: Long): Long { val a = sqrt(n.toDouble()).toLong() return if (a * a == n) (a + 1)*(a + 1) else -1 } } 다른사람의 풀이 class Solution { fun solution(n: Long): Long { val sqrt = sqrt(n.toDouble()) return if(sqrt % 1.0 == 0.0) { (sqrt + 1).pow(2.0).toLong() } else { -1L } } }