[프로그래머스] 중앙값 구하기 : sort, sorted

Jamong·2023년 1월 5일
0

코딩테스트 입문
Day 5 - 2023.01.05


문제 설명

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미한다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7이다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성하라.

제한 사항

  1. array 의 원소의 갯수는 홀수이다.
  2. array 의 원소의 갯수는 0보다 크고 100보다 작다.
  3. array 의 원소의 크기는 -1,000보다 크고 1000보다 작다.

문제 풀이

중앙값 구하기.swift

import Foundation

func solution(_ array:[Int]) -> Int {
	// 제한 사항
	guard (1...100 ~= array.count), (array.count % 2 == 1) else {
		return 0
	}
	
	// 문제 풀이
	let sortedArray = array.sorted()
	return sortedArray[sortedArray.count / 2]
}

먼저 제한 사항은 guard문을 이용하여 array의 원소 갯수 조건을 만들어 주었다.

문제 풀이에서는 swift의 내장함수 sorted()를 이용하여 정렬하여 sortedArray 상수에 넣어주었고, sortedArray의 원소 개수의 반을 나눠 중앙값을 찾았다. (인덱스가 1부터 시작이라면: 원소의 갯수 / 2 + 1 이겠지만 인덱스가 0부터 시작하기 때문에 원소의 갯수 / 2 로 중앙 값의 인덱스를 찾아 줄 수 있었다.)


sort()와 sorted()의 차이

sort는 원본 배열을 오름차순으로 정렬한다.

sorted는 원본 배열은 그대로 두고, 사본을 만들어 오름차순으로 정렬한다.

// sort() 사용

var arraySort = [1, 4, 2, 3, 5]

arraySort.sort()

print(array) 		// [1, 2, 3, 4, 5]


// sorted() 사용

var arraySorted = [1, 4, 2, 3, 5]

var arrayCopi = arraySorted.sorted()

print(arraySorted)	// [1, 4, 2, 3, 5]

print(arrayCopi) 	// [1, 2, 3, 4, 5]

문제 풀이에서 sort()를 사용하고자 했다면 sortedArray 상수를 만들지 않고 받아온 array에 array.sort() 로 사용이 가능했다.

profile
새해 목표 : 1일 1 깃, 블로그, 프로그래머스 2문제

0개의 댓글