코틀린(Kotlin)/프로그래머스 39

[프로그래머스/코틀린(Kotlin)] 하샤드 수

양의 정수 x가 하샤드 수(x의 자릿수의 합으로 x가 나누어지는 수)인지 판별해 보기 예시) 풀이 불(boolean) 타입으로 참과 거짓을 판명하는 논리 연산 활용하기 .map()을 이용해서 x의 각 자릿수의 합 구하기 x%x의 각 자릿수들의 합 == 0을 이용해서 하샤드 수 판별 제출 코드 (코드 해석해 보기) .map을 사용해서 x의 각 자릿수를 더한 값을 구한다 불타입이므로, x를 x의 각자릿수 합으로 나머지 계산해서 0일 경우 참, 아닐 경우 거짓으로 리턴한다

[프로그래머스/코틀린(Kotlin)] 정수 내림차순으로 배치하기

정수 n의 각 자릿수를 내림차순으로 정렬해 보기 예시) 풀이 내림차순 정렬 sortedArrayDescending() 사용하기 제출 코드 (코드 해석해 보기) - 새로운 키워드가 나오면 항상 몇 시간 동안 검색해 본다.. sort를 사용하면 오름차순이라고 한다 sortDescending은 내림차순 또한 sort와 sorted가 있는데, -ed는 정렬된 List 타입으로 반환한다고 한다 +) MutableList타입일 경우 sort, sorted 2가지 다 존재하며 sort를 사용할 경우 해당 MutableList를 정렬한다. sorted를 사용할 경우 정렬된 List 타입을 반환하므로 이를 다시 저장해주어야 한다. 단, List의 타입일 경우 sort 형태는 없고 sorted의 형태만 존재한다.

[프로그래머스/코틀린(Kotlin)] 정수 제곱근 판별

양의 정수 n이 x의 제곱이면 (x+1)의 제곱을 리턴하고, 아니라면 -1 리턴하기 예시) 풀이 제곱근 구하는 법 = sqrt를 사용하기 if else를 사용해서 제곱근일 땐 (x+1)의 제곱을, else일 땐 -1을 리턴한다 제출 코드 (코드 해석해 보기) sqrt를 사용해서 제곱근을 구할 수 있다. sqrt를 사용하기 위해선 kotlin.math.* 를 임포트해야 한다고 한다 to.Double()를 쓴 이유는 Math함수는 인자와 리턴 모두 Double이라고 한다. Math 함수에 관해서 4의 제곱근 = sqrt(4.0) = 2.0 4의 제곱 = (4.0).pow(2) = 16.0 4의 세제곱 = (4.0).pow(3) = 64.0 피타고라스로 대각선 길이 구하는 경우 hypot(3.0, 4.0) =..

[프로그래머스/코틀린(Kotlin)] 자연수 뒤집어 배열로 만들기

100억 이하의 자연수 n을, 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴하기 예시) 풀이 n을 String으로 reversed()를 이용해 String을 뒤집는다 .map을 이용해 리스트화시킨다 Int형으로 변환시켜서 리턴 시킨다 제출 코드 (코드 해석해 보기) ※이 문제는 map의 존재를 잊고 있었고, 해석까지 해주신 분 덕분이다.. n이 12345인 경우, n.toString() : 12345 → "12345" .reversed() : "12345" → "54321" .map{} : "54321"를 List로 변환 .map { e -> e.toString().toInt()} : List로 만드는데 e가 "5" "4" "3" "2" "1" 이므로 toString() 없이 아스키코드로 변환하..

[프로그래머스/코틀린(Kotlin)] x만큼 간격이 있는 n개의 숫자

정수 x와 자연수 n을 입력받아, x부터 시작해서 x씩 증가하는 n개의 숫자 배열을 지니는 리스트 만들기 예시) 풀이 배열을 이용한 문제 mutable리스트 사용하기 제출 코드 (코드 해석해 보기) mutableListOf 컬렉션에 입력될 타입을 안에 적는다 임의의 정수 i를 1부터 n번까지 반복시킨다.(배열에 자연수 n개의 숫자가 있어야 하니까) 반복할수록 i에 임의의 정수 x를 곱해서 추가시킨다.(x.toLong()으로 곱해서 배열 안의 숫자를 바꾼다) 롱타입 Array로 return 시킨다

[프로그래머스/코틀린(Kotlin)] 나머지가 1이 되는 수 찾기

3 이상 1,000,000 이하의 자연수 n을 x로 나눴을 때 나머지가 1이 되도록 하는 가장 작은 자연수 x 구하기 예시) 풀이 반복문 for 이용하기 n을 x로 나눴을 때 나머지가 1이 되도록 한다 break를 사용해서 가장 먼저 도출되는(나머지가 1이 되도록 하는 가장 작은) 자연수 x를 return 시킨다 제출 코드 (코드 해석해 보기) for문의 조건문에 (i in 1 until n) 또는 (i in 1 .. n)를 써도 답은 같다 (다만, 자연수 x가 n과 똑같으면 어차피 나머지가 1이 나오지 않기 때문에 until n으로 설정) if문에 n을 x로 나눴을 때 나머지가 1일 경우 x를 출력하는데 break를 사용해서 가장 먼저 도출되는 (가장 작은) 수를 return 시킨다. 만약, break..

[프로그래머스/코틀린(Kotlin)] 약수의 합

0 이상 3000 이하인 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하기 예시) 풀이 반복문 for를 이용하기 약수 구하는 법 = n을 n보다 작거나 같은 자연수로 나눠서 나머지가 0인 수를 구하자 제출 코드 (코드 해석해 보기) 반복문 for에 n보다 작거나 같은 자연수 i의 조건식을 넣는다 (in 1..n = 1부터 n까지) 조건문 if에 n을 n보다 작거나 같은 자연수 i로 나눴을 때 나머지가 0인 경우에만 answer += i를 주어서 n의 구한 약수들을 +되도록 한다

[프로그래머스/코틀린(Kotlin)] 자릿수 더하기

1~100,000,000까지의 자연수 N에서 각 자릿수의 합을 구하기 예시) 풀이 특정 조건을 반복하기 때문에 while 문을 사용해보자 (검색찬스) %10을 하면 수를 10으로 나눈 수의 나머지를 얻는다고 한다 (검색찬스) 10씩 나눠가면서 각 자릿수들을 얻는다 제출 코드 (코드 해석해 보기) n이 123일 경우, answer += num%10에서 3 도출 (123을 10으로 나눴을 때 나머지가 3이기 때문에, answer에 +3) num =num/10으로 12.3 다시 answer += 12.3%10을 통해 2.3이 나오지만 Int타입이므로 answer에 +2 num = 1.23에서 10으로 나눴을 때의 나머지가 1이기 때문에 answer에 +1