문제
정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
https://school.programmers.co.kr/learn/courses/30/lessons/120899
풀이
1. 접근
1.1 관찰
배열에서 가장 큰 숫자와 인덱스를 꺼내 차례대로 담아주는 문제
입력 : 배열(정수)
출력 : 배열(정수)
1.2 계획
정렬하기 : 내림차순하기
answer에 담기 : 0번째 요소와 인덱스를 담기
2. 시행착오
2.1 시도
class Solution {
fun solution(array: IntArray): IntArray {
var answer: IntArray = intArrayOf()
array.sortDescending()
answer = intArrayOf(array[0],0)
return answer
}
}
검증결과 : 실패. 에러는 없는데 결괏값과 기댓값이 다르다. 최댓값은 맞는데 인덱스 번호가 다르다.
원인분석 : 주어진 그대로의 배열에서 찾아야하나보다. 계획을 다시 세워야겠다.
해결방안 : 계획수정
값을 하나하나 비교해야되니까 for문으로 한다.
i 정의하기 : array의 인덱스
i 비교하기 : if문 조건으로 i가 더 큰지 비교하기. answer에 0을 초기화해둔다.
answer에 담기 : 조건에 일치하면 answer에 담기. 더 큰 수일 경우 덮어씌운다.
class Solution {
fun solution(array: IntArray): IntArray {
var answer: IntArray = intArrayOf(0)
for(i in array.indices) {
if (array[i] > answer[0]) answer = intArrayOf(array[i], i)
}
return answer
}
}
검증결과 : 성공
회고
처음에 내림차순 할 때 https://hhyun-s2.tistory.com/47에 정리해뒀던 표를 보고 sortedDescending() 썼는데 최댓값을 못찾았다. 알고보니 sort sorted에는 차이가 있었다.
sort : 해당 배열을 정렬해 반환
sorted : 정렬된 배열을 새로 만들어 반환
다른 방향의 접근도 흥미로웠고 답을 찾는 과정에서도 새롭게 배울 수 있어서 좋았던 회차.
'코틀린 > 코딩테스트' 카테고리의 다른 글
코딩테스트 [자릿수 더하기] (0) | 2024.06.20 |
---|---|
코딩테스트 [n의 배수 고르기] (0) | 2024.06.20 |
코딩테스트 [대문자와 소문자] (0) | 2024.06.19 |
코딩테스트 [암호 해독] (0) | 2024.06.17 |
코딩테스트 [숨어있는 숫자의 덧셈 (1)] (0) | 2024.06.17 |