TIL/kotlin 알고리즘
kotlin 프로그래머스 lv1 두 개 뽑아서 더하기
crablo
2024. 2. 2. 13:49
728x90
처음에 문제를 보고서 numbers의 index를 리스트로 만들어서 다시 랜덤 인덱스 정수를 추출해야하는
생각이 들어서 시간을 낭비했다..
처음 코드는
이렇게 작성했다. rdIdx에 index배열에서 랜덤인자를 저장하고
newIdx에 index를 filter해서 이미뽑힌 rdIdx는 제외한 나머지 수들중 하나를 랜덤하게 저장한다.
그 후 각각의 수를 더해서 sumRandomNum 변수에 저장할 생각을 했는데
하다보니 return값이 배열이라는 점을 간과했다...;;;;
그래서 코드를 다시 작성했다.
이중 for문을 생각했다.
그 이유는 배열에서 첫번째 수와 2번째수를 간편하게 바로 뽑아낼 수 있을것 같아서다.
위와 같이 작성하면 j 에 i를 제외한 나머지 수를 저장할 수 있었다.
sum 변수에 각각 합한 값들을 저장할 수 있었고 그것을
초기화한 set 배열에 저장했다.
여기서 마지막에 계속 에러가 났었는데
그 이유가 uniqueSums 에서 IntArray로 변환 후 sorted()함수를 사용해서
계속 중복된 값이 나타났다.
하지만 sortedArray()를 사용한 후에 결과값이 정상적으로 나왔다.
문제를 풀고난 후 아직도 컬렉션에 대한 개념이 헷갈리는것 같아서
다시 정리해보자면 아래와 같이 표로 정리할 수 있을것 같다.
collection | immutable(변경불가능한 타입) | mutable(변경 가능한 타입) |
List | listOf | mutableListOf, arrayListOf |
Set | setOf | mutableSetOf,hashSetOf,linkedSetOf,sortedSetOf |
Map | mapOf | mutableMapOf,hashMapOf,linkedMapOf,sortedMapOf |
728x90