티스토리 뷰

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/120862

 

문제 사진

내 풀이

 

테스트케이스 7번에서 실패하는데 이유를 모르겠다.. ㅠㅠ

import Foundation

func solution(_ numbers:[Int]) -> Int {
    var maxValue: Int = 0
    for i in 0...numbers.count - 1 {
        for j in 0...numbers.count - 1 {
            if i != j {
                maxValue = max(maxValue, numbers[i] * numbers[j])
            }
        }
    }
    return maxValue
}

solution([1, 4, 4, 5, 7, 7])
  1. 최대값을 저장하는 maxValue 변수를 만든다.
  2. 두 요소를 곱해야하니 이중반복문을 사용해 index가 서로 같지 않은것만 곱해준다.
  3. max(_ x:,_ y:) 메서드를 사용해 가장 큰값을 maxValue에 할당한다.

다른사람의 풀이

func solution(_ numbers:[Int]) -> Int {
    var numbers = numbers.sorted()

    return max(numbers[0] * numbers[1], numbers[numbers.count-1] * numbers[numbers.count - 2])
}

solution([10, 20, 30, 5, 5, 20, 5])

for문이 무조건 필요할거라 생각했는데 대박이다..

  1. sorted() 메서드로 최소값, 최대값을 정렬 한다.
  2. max()메서드로 numbers[0] * numbers[1] 와 numbers[numbers.count - 1] * numbers[numbers.count - 2]의 값중 가장큰 값을 반환한다. (numbers[0], numbers[1]이 둘다 음수 일 수 있기 때문)
728x90