코틀린/코딩테스트

코딩테스트 [가장 큰 수 찾기]

정혜현 2024. 6. 19. 09:47

문제

정수 배열 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 : 정렬된 배열을 새로 만들어 반환

 

다른 방향의 접근도 흥미로웠고 답을 찾는 과정에서도 새롭게 배울 수 있어서 좋았던 회차.