문제 이해 정수 저장 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 } } }
문제 이해 자연수 n 뒤집어 각 자리 수 원소를 가지는 배열로 Return 접근 수의 나열 -> Map 기존의 배열에 넣어주기 뒤집기 풀이 class Solution { fun solution(n: Long): IntArray { var answer = intArrayOf() n.toString().map { answer += (it.toInt() - '0'.toInt()) } return answer.reversedArray() } } 다른사람의 풀이 class Solution { fun solution(n: Long): IntArray = n.toString().reversed().map { it.toString().toInt() }.toIntArray() }
문제 이해 자연수 N의 각 자릿수의 합 Return 접근 수의 나열 -> 문자열 List 변환 map으로 숫자의 값을 아스키 코드 값으로 치환 - 48 (0의 아스키 코드) sum 풀이 class Solution { fun solution(n: Int): Int = n.toString().map { it.toInt() - '0'.toInt() }.sum() } 다른사람의 풀이 class Solution { fun solution(n: Int): Int { var input = n var answer = 0 while (input != 0) { answer += input % 10 input /= 10 } return answer } }
문제 이해 문자열 s 한개 이상의 단어 공백 문자로 구분 짝수 -> 대문자 홀수 -> 소문자 문자 전체의 짝/홀 X 단어 별로 짝/홀 첫번째 글자 짝수 처리 접근 split : 공백 기준으로 나눈 리스트 반환 joinToString : 사이에 공백을 다시 붙여줌 word.mapIndexed 사이의 단어를 처리해서 반환함 짝수 -> 대문자 홀수 -> 소문자 다시 단어를 붙여주기 joinToString 풀이 class Solution { fun solution(s: String) = s.split(" ").joinToString(" ") { word -> word .mapIndexed{ index, char -> if ( index % 2 == 0) char.toUpperCase() else char.toL..
문제 이해 정수 n의 약수의 합 Return 접근 전체 for 돌리기 나눠서 0 되는 집합의 합 풀이(나의 풀이) class Solution { fun solution(n: Int): Int { var answer = 0 for (i in 1..n) { if (n % i == 0) { answer += i } } return answer } } 풀이(다른 사람의 풀이) class Solution { fun solution(n: Int): Int { var answer = 0 answer = (1..n).filter { n % it == 0 }.sum() return answer } }
문제 이해 문자를 n 만큼 밀어서 return 소문자 대문자 접근 입력값 리스트화 대문자의 경우 밀어주기 소문자의 경우 밀어주기 풀이 class Solution { fun solution(s: String, n: Int): String { return s.toList().joinToString(separator = "") { when (it) { in 'A'..'Z' -> ('A'.toInt() + (it.toInt() - 'A'.toInt() + n) % ('Z' - 'A' + 1)).toChar() in 'a'..'z' -> ('a'.toInt() + (it.toInt() - 'a'.toInt() + n) % ('z' - 'a' + 1)).toChar() else -> it }.toString() }..
문제 이해 1차원 정수배열 a,b a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 내적 return 접근 배열을 for 문으로 돌리기 수식 계산 풀이 class Solution { fun solution(a: IntArray, b: IntArray): Int { var answer: Int = 0 for (i in a.indices) { answer += a[i]*b[i] } return answer } }
문제 이해 toInt 접근 코틀린 언어 자체의 형변환 사용 풀이 class Solution { fun solution(s: String): Int = s.toInt() }
문제 이해 size = n 수박수박수박수.. return 접근 CharArray size 지정 안에 들어갈 값 설정 짝수 -> '수' 홀수 -> '박' 풀이 class Solution { fun solution(n: Int): String = String(CharArray(n) { i -> if (i % 2 == 0) '수' else '박' }) }
문제 이해 array 속의 'Kim'의 위치 x return "김서방은 x에 있다" 접근 indexOf로 위치 찾기 위치 출력 return 풀이 class Solution { fun solution(seoul: Array): String { var location = seoul.indexOf("Kim") return "김서방은 ${location}에 있다" } }
문제 이해 문자열 길이 4 or 6 이고 숫자로만 구성되어있는 지 확인 true / false return 접근 all 함수 : 모든 원소가 람다식 만족하는 지 확인 -> isDigit 길이 체크 return 풀이 fun main() { val data = "1234" println(Solution().solution(data)) } class Solution { fun solution(s: String): Boolean { return s.all { it.isDigit() } && ((s.length == 4 || s.length == 6)) } }