์•ˆํ…Œ๋‚˜ - ๋ฐฑ์ค€(Swift)

2022. 11. 6. 17:39ใ†Algorithm

์•ˆํ…Œ๋‚˜ - ๋ฐฑ์ค€(Swift)

 

 

 ๋ฌธ์ œ ์„ค๋ช…

 

https://www.acmicpc.net/problem/18310

 

18310๋ฒˆ: ์•ˆํ…Œ๋‚˜

์ฒซ์งธ ์ค„์— ์ง‘์˜ ์ˆ˜ N์ด ์ž์—ฐ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค. (1≤N≤200,000) ๋‘˜์งธ ์ค„์— N์ฑ„์˜ ์ง‘์— ์œ„์น˜๊ฐ€ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด 1์ด์ƒ 100,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

 ๋‚˜์˜ ํ’€์ด

 

์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ๋ดค์„๋•Œ ๋Œ€์ถฉ ๊ฐ€์šด๋ฐ ์ฏค์— ์žˆ์œผ๋ฉด ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๊ณต์ฑ…์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ทธ๋ ธ๋‹ค.

1) ๊ท ์ผํ•œ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ€์กŒ์„๋•Œ

2) ๊ท ์ผํ•˜์ง€ ์•Š์€ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ€์กŒ์„๋•Œ

 

๋‘ ๊ฐœ์˜ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋”ฑ ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•ˆํ…Œ๋‚˜๋ฅผ ์„ค์น˜ํ–ˆ์„๋•Œ ์ตœ์†Œ๊ฑฐ๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค.

์˜ˆ์‹œ๋กœ 1 4 7 10 ๊ฐ™์€ ๊ฒฝ์šฐ 4๋‚˜  7์— ์„ค์น˜๋ฅผ ํ•˜๋ฉด 12๊ฐ€ ๋œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  1 2 30 80 90 200 ๊ฐ™์€ ๊ฒฝ์šฐ๋„ 30์ด๋‚˜ 80์— ์„ค์น˜๋ฅผํ•˜๋ฉด ์ตœ์†Œ๊ฐ€ ๋œ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ํ™€์ˆ˜์ผ ๋•Œ์™€ ์ง์ˆ˜์ผ ๋•Œ๋ฅผ ๋‚˜๋ˆ„๋Š”๋ฐ ํ™€์ˆ˜์ผ๋•Œ๋Š” 2๋กœ๋งŒ ๋‚˜๋ˆ ์ฃผ๋ฉด ๋˜์ง€๋งŒ ์ง์ˆ˜์ผ๋•Œ๋Š” 2๋กœ ๋‚˜๋ˆ„๊ณ  1์„ ๋นผ์ค˜์•ผ ๊ฐ€์šด๋ฐ ์ค‘์—์„œ ์ž‘์€ ๊ฐ’์ด ๋œ๋‹ค.

 

import Foundation

let n = Int(readLine()!)!

var arr = readLine()!.components(separatedBy:" ").map{Int($0)!}

arr.sort(by: <)

if arr.count % 2 == 0 {
    print(arr[(arr.count / 2)-1])
} else {
    print(arr[arr.count / 2])
}