제곱근/제곱 구하기 Double 형이나 Float 형이어야 한다. import Kotlin.math.* var a = 25 var answer = sqrt(a) var answer2 = answer.pow(2) 첫 시도 import kotlin.math.* class Solution { fun solution(n: Long): Long { var x = sqrt(n.toDouble()) var answer : Long = 0 if ( x > 0 ) { answer = (x + 1).pow(2).toLong() } else { answer = -1 } return answer } } 제곱근이 양의 정수가 아닌 경우가 반환이 안된다. 왜 그럴까? x 는 n 을 Double 형으로 변환한 다음 구한 제곱근이고..
내 풀이 class Solution { fun solution(n: Long): ArrayList { var answer = arrayListOf() var x = n while(x > 0){ var a :Int = (x % 10).toInt() answer.add(a) x /= 10 } return answer } } 다른 사람 풀이 class Solution { fun solution(n: Long): IntArray { return n.toString().reversed().map { it.toString().toInt() }.toIntArray() } } 처음 보는 것들이 나왔다. .reversed() .map{} : 각 원소를 원하는 형태로 변환해서 새 컬렉션을 만든다. n.toString()...
class Solution { fun solution(x: Int, n: Int): mutableListOf { var answer = mutableListOf() var a = x while(answer.size != n){ answer.add(a) a += a } return answer } } 이렇게 했더니 리스트에서 자꾸 오류가 뜬다. error: unresolved reference: mutableListOf fun solution(x: Int, n: Int): mutableListOf class Solution { fun solution(x: Int, n: Int): MutableList { var answer = mutableListOf() var a = x while(answer.size ..
실패한 풀이 n을 나눠서 나머지가 1인 동시에 3보다 크거나 같은 값들을 임의의 리스트에 집어넣고 그 리스트의 첫번째 값을 리턴했더니 정답률 80퍼... 생각해보니 나머지가 1인 나오는 가장 작은 자연수라 했으니 굳이 리스트에 다 집어넣어서 그 첫번째 값을 빼낼 필요가 없다. 어차피 for 문은 범위 내에서 작은 값부터 차례차례 대입하니 만족하는 값이 나오기만 하면 바로 반복문을 빠져나오면 되잖아 i의 범위를 왜 3부터 시작하도록 만들었을까 n의 범위로 착각하고 실수로 집어넣은 것 같다. 마찬가지로 i 는 3보다 크거나 같을 필요가 없다. 그건 n 의 제한사항이다. 두번째 풀이 class Solution { fun solution(n: Int): Int { var answer: Int = 0 for (i..
약수를 모두 더한 값 약수를 어떻게 구하지? for문에 넣어서 1 * n, 2 * n-1 요고 돌릴 수가 있나? class Solution { fun solution(n: Int): Int { var answer = 0 for ( i in 1 until n+1) { var num = 0 if ( i * (n-num) == n){ answer = answer + i+(n-num) num += 1 } else { num += 1 } } return answer } } 만들었다. 케스트 케이스 일부만 통과했다. 약수는 양쪽끝에서 나란히 줄어들고 커지는게 아니니깐...^^.... 다른사람 풀이 나눌 수 있는 수 구하기..^^ filter 함수, sum 함수가 또 나왔다. 이제 기억할 것!! 범위.filter{조..
짝수와 홀수 IF조건식을 사용해서 num을 2로 나눈 나머지가 0일 경우 "Even", 그 외의 경우 "Odd" 반환 다른 사람의 풀이 간단하게 적는다는걸 매번 까먹네.... 평균 구하기 배열의 길이를 구할 때 arr.size : size property arr.count() : count 메소드 다른 사람의 풀이 average 메소드 자릿수 더하기 못 풀었다. 다른 함수 써야되는거 아닌가 하고 찾아봤는데 while 반복문에 %와 /를 이용해서 이렇게 쉽게 뽑아내다니 🥲🥲🥲 언제 혼자서 이만큼 풀 수 있게되는걸까 이 문제는 매일 반복해야겠다 안 까먹게 문자열의 배열로 바꾸어서 하나씩 더하는 풀이
내 답 배열의 평균값을 먼저 구하고 제한사항의 평균의 소수분이 0.0 또는 0.5 인 경우만 출력하라는 부분을 위해 if 구문을 통해 평균 - 평균.toInt() 의 값이 0.0 또는 0.5 인 경우에만 변수 e 에 평균 값이 들어있는 변수 b를 할당하라고 했다. 다른 사람 풀이 제한사항 지킨다고 골 아팠는데 다들 그냥 평균 뽑아내고 가셨다......ㅜㅜㅜㅜㅜㅜㅜㅜㅜ 테스트 케이스의 평균값이 무조건 n.0 n.5 로 나오는 이유가 뭐지... 그래 나 수학 못해요....이걸 언제 배웠대 뭐라고 검색해야 나올까.... 등차수열 : 인접한 숫자와의 차이가 같은 수의 나열 이거 같은데 알고리즘에 수학적 개념이 필요하다는게 이런거였나?
조건 : n이하이면서 2로 나눈 나머지가 0일 때 실행 : 변수 answer 에 더해준다 n이하의 숫자들을 차례로 대입시켜야 하니 반복문 for 를 사용했고 for구문의 조건으로 0 until n+1 을 넣었다. 그리고 그 안에 if 구문을 넣어서 2로 나눈 나머지가 0인 경우를 골라냈다. for 구문 헷갈려서 오래걸렸다 다른사람 풀이 처음 보는 것들이 등장했다. 대입할 애들 (0..n)을 filter 뒤의 {} 으로 조건을 걸어서 필터링 하고 sum 하는 것 같다. 그냥 for 문 쓰는 것보다 훨씬 간결하다!!! sum함수는 그냥 바로 작동되나보다
90 0 && angle < 90) 이런식으로 작성했다. 0< angle 90 은 두 개의 조건을 나타내는 것이기 때문에 && 나 || 로 묶어주어야 한다. 그리고 이지 제한사항에 angle 은 1 이상이라 했으므로 0 < 부분을 빠져도 된다. 당연하지만 when 구문으로도 가능하다.
class Solution { fun solution(num1: Int, num2: Int): Int { var a : Double = (num1.toDouble() / num2.toDouble())*1000 var b = a.toInt() return b } } / : 나누고 몫만 가져옴 ->몫만 가져옴으로 Int 타입으로 나오기 때문에 적절한 값을 가져오기 위해서는 실수 타입으로 변경해줘야함 ->toDouble() 사용 ->1000을 곱한 이후에는 정수 부분을 return 해야하므로 toInt() 사용 다른 사람의 풀이 순서만 바꾸면 형변환 필요없이 값이 나오다니....어느정도해야 이렇게 생각하는게 가능해질까🥲🥲🥲나도 이렇게 생각해내고 싶다!!!!!