문제 이해 자연수 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)) } }
문제 이해 문자열 S (영문자) 큰것부터 작은 순으로 정렬 ( 소문자 > 대문자 ) 새로운 문자열 return 접근 CharArray로 변환 Comparator 이용 정렬 (역순) toString 풀이 fun main() { val data = "Zbcdefg" println(Solution().solution(data)) } class Solution { fun solution(s: String): String { return s.toCharArray() .sortedWith(Comparator { o1, o2 -> o2 - o1 }) .joinToString("") } }
문제 이해 string 의 n번쨰 글자 기준으로 오름차순 return 접근 also 사용 일반적 정렬 부여받은 index로 정렬 풀이 class Solution { fun solution(strings: Array, n: Int): Array { //객체의 속성을 전혀 사용하지 않거나 변경하지 않고 사용하는 경우에 also return strings.also { it.sort() it.sortBy { it[n] } } } }