TIL 20240619 num_list.last()와 num_list[num_list.size - 1]의 차이
2024. 6. 19. 11:28ㆍ개발일지
- num_list.last():
- last()는 코틀린에서 제공하는 확장 함수다.
- 이 함수는 배열의 마지막 요소를 반환한다.
- 코드가 더 간결하고 읽기 쉬워진다.
- 예외 처리가 내장되어 있어, 배열이 비어 있을 경우 NoSuchElementException을 발생시킨다.
- num_list[num_list.size - 1]:
- 배열의 인덱스를 직접 사용하여 마지막 요소에 접근하는 방법이다.
- 배열의 길이에서 1을 뺀 인덱스를 사용하여 마지막 요소를 가져온다.
- 이 방법은 더 명시적이며, 배열의 길이를 직접 계산해야 한다.
- 인덱스가 범위를 벗어나면 ArrayIndexOutOfBoundsException이 발생한다.
코테를 풀다가 알게 된거 다시 메모하기,,,
class Solution {
fun solution(num_list: IntArray): IntArray {
var answer = num_list.toMutableList()
if (num_list[num_list.size - 1] > num_list[num_list.size - 2]){
answer.add(num_list.last() - num_list[num_list.size - 2])
} else {
answer.add(num_list.last() * 2)
}
return answer.toIntArray()
}
}
이건 되는데,,, 아래는 왜 안될까를 찾아봤다...
음,, 별 차이가 없는거 같은데,, 하고 ㅋㅋㅋㅋ ㅠㅠ
class Solution {
fun solution(num_list: IntArray): IntArray {
var answer = num_list.toMutableList()
if (num_list[num_list - 1] > num_list[num_list - 2]){
answer.add((num_list.size - 1) - (num_list.size - 2))
} else {
answer.add((num_list.size - 1) * 2)
}
return answer.toIntArray()
}
}
찾아보니 이는 아래와 같다..
- 잘못된 인덱스 접근: 이는 배열의 요소를 인덱스로 사용하려고 하기 때문에 Type mismatch 오류가 발생하므로 num_list[num_list - 1]와 num_list[num_list - 2]는 올바른 접근 방식이 아니라고 한다...
- 잘못된 계산: answer.add((num_list.size - 1) - (num_list.size - 2))는 배열의 요소를 기준으로 계산하는 것이 아니라 배열의 크기를 기준으로 계산하고 있다.
그니까,, 음 배열의 요소를 기준으로 size - 2인값은 나누는 것은 상관없지만,,
이 것이,,, 요소가 아닌 인덱스로 사용하려고 하는 것이므로 올바른 답안을 받지 못하는 거였다,,, 허허
근데 찾아봤는데,, 알거 같기도 하고,, 확실하게 알겠다!!! 는 아니랄까,,?
아직 막 와닿진 못했다.. 다시 풀면서 알아가야겠당 ㅠㅠ
ㅋㅋㅋ
아 여기서 반전,,,
class Solution {
fun solution(num_list: IntArray): IntArray {
var answer = num_list.toMutableList()
if (num_list[num_list.size - 1] > num_list[num_list.size - 2]){
answer.add(num_list[num_list.size - 1] - num_list[num_list.size - 2])
} else {
answer.add(num_list[num_list.size - 1] * 2)
}
return answer.toIntArray()
}
}
ㅋㅋㅋㅋㅋㅋㅋ 아 블로그를 거의 다 작성하고 알게 된 사실인데,,, 걍 내가 잘못 썼던 거였다!!
음,, 작성하면서도 왜 안될까 흠,, 이랬는뎈ㅋㅋ ㅠㅠ 다시 읽어보니 뭔가 이상한거 아닌가!!
제대로 풀고 바보짓했네,,, ㅎㅎ
아 왜 안되나 했네 ㅋㅋㅋㅋㅋ
대괄호 안에
size 라고 명시해둬야 했고,,,
num_list[num_list.size - 1]
이렇게 확실하게 적어야 했던거다.. 그냥 인덱스 값만 넣으니 안된거지,,, 참 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
어이가 없넼ㅋㅋㅋ
무튼 이해는 대강 했다!!!!
머쓱해야하면서 끝,,,
'개발일지' 카테고리의 다른 글
TIL 20240815 - 자바 프로젝트 메모 (1) (1) | 2024.08.15 |
---|---|
TIL 20240622 RestClient? (1) | 2024.06.22 |
TIL 20240609 반복문에서 ..와 until의 차이 (1) | 2024.06.09 |
TIL 20240530 length와 size의 차이는 무엇일까? (0) | 2024.05.30 |
TIL 20240521 - toUpperCase() 와 uppercase()의 차이? (0) | 2024.05.21 |