1~12번 / 자릿수 더하기 / 약수의 합
+) 20240109 : 1~12번 문제의 풀이도 여기에 추가하기로 함
1. 두 수의 차
class Solution {
fun solution(num1: Int, num2: Int): Int {
var answer: Int = 0
if (-50000 >= num1 && num2 <= 50000) {
}
return num1 - num2
}
}
2. 두 수의 곱 / 3. 몫 구하기 / 4. 나이 출력 / 5. 숫자 비교하기
// 두 수의 곱
class Solution {
fun solution(num1: Int, num2: Int): Int {
var answer: Int = 0
if (0 <= num1 && num2 <= 100) {
}
return num1 * num2
}
}
// 몫 구하기
class Solution {
fun solution(num1: Int, num2: Int): Int {
var answer: Int = 0
if (0 <= num1 && num2 <= 100) {
}
return num1 / num2
}
}
// 나이 출력
class Solution {
fun solution(age: Int): Int {
var answer: Int = 0
if (0 < age && age <= 120) {
}
return 2022 - (age - 1)
}
}
// 숫자 비교하기
class Solution {
fun solution(num1: Int, num2: Int): Int {
var answer: Int = 0
if(0 <= num1 && num2 <= 10000){
when (num1) {
num2 -> return 1
else -> return -1
}
}
return answer
}
}
// 두 수의 합
class Solution {
fun solution(num1: Int, num2: Int): Int {
var answer: Int = -1
if (-50000 <= num1 && num2 <= 50000) {
}
return num1 + num2
}
}
6. 두 수의 나눗셈 / 7. 각도기
// 두 수의 나눗셈
class Solution {
fun solution(num1: Int, num2: Int): Int {
var answer: Int = 0
if (0 < num1 && num2 <= 100) {
answer = ((num1.toDouble() / num2.toDouble()) * 1000).toInt()
}
return answer
}
}
// 각도기
class Solution {
fun solution(angle: Int): Int {
var answer: Int = 0
if (0 < angle && angle < 90) {
return 1
} else if (angle == 90) {
return 2
} else if (90 < angle && angle < 180) {
return 3
} else {
return 4
}
}
}
8. 짝수의 합 / 9. 배열의 평균값 / 10. 짝수와 홀수 / 11. 평균 구하기
// 짝수의 합
class Solution {
fun solution(n: Int): Int {
var answer: Int = 0
for (e:Int in 1 .. n) {
if (e % 2 == 0) {
answer += e
}
}
return answer
}
}
// 배열의 평균값
class Solution {
fun solution(numbers: IntArray) = numbers.average()
}
// 짝수와 홀수
class Solution {
fun solution(num: Int) = if (num % 2 == 0) "Even" else "Odd"
}
// 평균 구하기
class Solution {
fun solution(arr: IntArray) = arr.average()
}
13. 자릿수 더하기
class Solution {
fun solution(n: Int): Int {
var answer = 0
var numbers = n
while (numbers != 0) {
answer += numbers % 10
numbers /= 10
}
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
println("${answer}")
return answer
}
}
while 문을 어제 좀 썼더니 오늘은 금방 생각이 났다.
numbers 를 만들어서 0과 같지 않을 경우에 answer에 numbers 를 10으로 나눈 값을 넣는다. 그리고 numbers를 10으로 나누어서 저장한다. 테스트로 answer를 실행하고 정답을 리턴했다.
+) 231222 추가
class Solution {
fun solution(n: Int): Int = n.toString().map { it -> it.toString().toInt() }.sum()
}
같은 식을 다른형식으로 풀어보았다.
이번에는 map을 이용했는데 내가 본 예제에서 it -> 이라고 된 부분을 이해하지 못해 찾아보았다.
람다 표현식은 다음과 같은 일반적인 구조를 가집니다:
{ 매개변수 -> 본문 }
여기서 매개변수는 람다 표현식 내에서 사용되는 변수이며, 본문은 해당 람다의 동작을 정의합니다.
원래 코드에서 map 함수는 각 문자를 e로 가져와서 각 문자를 문자열로 변환하고 다시 정수로 변환하여 리스트를 생성합니다. 예를 들어, "123"의 경우에는 리스트 [1, 2, 3]이 생성됩니다.
그리고 마지막에 sum으로 전부 더해주면 된다.
14. 약수의 합
class Solution {
fun solution(n: Int): Int {
var answer = 0
for (i in 1..n) {
if (n % i == 0) {
answer += i
}
}
println("${answer}")
return answer
}
}
for 문을 금방 생각하지 못해서 조금 시간이 들었다.
(i in 1 .. n ) 안에서 1부터 n 까지의 숫자를 만든다.
if 로 내려와서 n에 i 를 나눈 값이 0 과 같을 경우 answer에 i값을 더한다. 그리고 return 한다.
개선점
기초 문법의 개념을 정리해서 외우고 많이 써서 필요할때 바로바로 꺼내는 훈련이 필요할것같다.
지금은 이럴 때 썼었으니 이때도 쓸 수 있을 것 같다는 애매한 느낌으로 사용중이라 조금만 응용해야 해도 쓰던것만 쓰는 단점이 있다. 처음보다는 나아졌지만... 어쨌든 열심히 해야겠다.