๐Ÿง‘๐Ÿป‍๐Ÿ’ป Coding Test/โŒจ๏ธ Programmers

[ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ] ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’

EarthSea 2024. 3. 21. 09:17

 

 

 

๐Ÿ„ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ ํ’€์ด

โœ๐Ÿป Github

๋ฌธ์ œ ํ’€์ด github ๋งํฌ

 

 

์™€! ๋“œ๋””์–ด ๋ ˆ๋ฒจ 2 ํ‘ผ๋‹ค!

์‚ฌ์‹ค ์•„์ง ๋ชป ํ‘ผ Lv.1 ์นœ๊ตฌ๋“ค์ด ๋‚˜๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์ง€๋งŒ, ์ด ์นœ๊ตฌ๋“ค์€ ์ฝ”๋“œ์นดํƒ€์— ๋ฒˆํ˜ธ๊ฐ€ ์—†๋Š” ์นœ๊ตฌ๋“ค์ด๋ผ ์ฃผ๋ง์— ํ•ด๊ฒฐํ•˜๊ธฐ๋กœ ํ•˜๊ณ , ์˜ค๋Š˜์€ ์•„์ฃผ ์„ค๋ ˆ๋Š” ๋งˆ์Œ์œผ๋กœ Lv.2๋ฅผ ํ’€์—ˆ๋‹ค. ์†Œ์ˆ˜ ์ฐพ๊ธฐ๋Š” ํ’€์—ˆ๋Š”๋ฐ ์™œ ํ’€๊ณ  ์žˆ๋Š” ๋ฌธ์ œ๋ƒ...? -3-

 

 

๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ž์—ด s์—๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ์ˆซ์ž๋“ค์ด ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. str์— ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž ์ค‘ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์•„ ์ด๋ฅผ "(์ตœ์†Œ๊ฐ’) (์ตœ๋Œ€๊ฐ’)"ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”.

์˜ˆ๋ฅผ๋“ค์–ด s๊ฐ€ "1 2 3 4"๋ผ๋ฉด "1 4"๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ , "-1 -2 -3 -4"๋ผ๋ฉด "-4 -1"์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ œํ•œ ์กฐ๊ฑด

  • s์—๋Š” ๋‘˜ ์ด์ƒ์˜ ์ •์ˆ˜๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

s return
"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"

 

 

๋ฌธ์ œ ํ’€์ด

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

func solution(_ s:String) -> String {
    var str = s.split(separator: " ").map{ Int(String($0))! }
    return "\(str.min()!) \(str.max()!)"
}

 

Lv.2 ๋ฌธ์ œ์—ฌ์„œ ์˜ค๋ž˜๊ฑธ๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  30๋ถ„์ •๋„ ์‹œ๊ฐ„์„ ์•ž๋‹น๊ฒจ ์ฑ…์ƒ์— ์•‰์•˜๋Š”๋ฐ, ์˜ ์ด์ง€ํ–ˆ๋‹ค.

์–ด์ œ ๊ณต๋ถ€ํ–ˆ๋˜ ๋ฌธ์ž์—ด ๋ถ„๋ฆฌ ์ฝ”๋“œ ๋ฐฉ์‹์ด ์˜ค๋Š˜ ๋ฌธ์ œ์—์„œ ๊ทธ๋Œ€๋กœ ๋‚˜์™€์„œ ์ ์šฉํ•ด์ฃผ์—ˆ๋‹ค. ๋‹ค๋งŒ ๋ฐ”๋€ ๊ฒƒ์€ Int๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์•ผ min๊ณผ max ํ•จ์ˆ˜๋ฅผ ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

 

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

func solution(_ s:String) -> String {
    var arr = s.components(separatedBy: " ").map({(value:String) -> Int in return Int(value)!})
    arr.sort()
    return String(arr[0]) + " " + String(arr[arr.count - 1])
}

์ด ๋ถ„์€ ๋‚˜์™€ ๋‹ฌ๋ฆฌ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•ด์„œ ๊ฐ€์žฅ ์•ž์˜ ๋ฐฐ์—ด๊ณผ ๊ฐ€์žฅ ๋’ท ๋ฐฐ์—ด์„ ๊บผ๋ƒˆ๋‹ค. ์Œ.. ๋‚˜๋ผ๋ฉด arr.first ๋ž‘ arr.last ์ผ์„ ๋“ฏ!

 

๊ทธ๋Ÿผ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋น„๊ตํ•ด๋ณด์ž.

min๊ณผ max ํ•จ์ˆ˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๊ฐ๊ฐ O(N)์ด๋‹ค. ๊ทธ๋Ÿผ sort()๋Š”? ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(N logN) ์ด๋‹ค. arr.first ์™€ arr.last ๊ฐ€ ๊ฐ๊ฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(1) ์ด๋‹ˆ ๋‚˜์˜ ํ’€์ด์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(2N) ์ด๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N logN+2) ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์•„๋ž˜์˜ ํ’€์ด๊ฐ€ ๋” ๋น ๋ฅธ ๊ฒƒ! min ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ๋‚ด๊ฐ€ ๋” ๋น ๋ฅด๊ฒ ์ง€๋งŒ, ๋‚˜๋Š” ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•ด์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ 2๋ฐฐ๊ฐ€ ๋œ ๊ฒƒ! ๋‹ค์Œ์—” ์ตœ๋Œ“๊ฐ’ ์ตœ์†Ÿ๊ฐ’์„ ๋™์‹œ์— ์‚ฌ์šฉํ•ด์•ผํ•  ์ผ์ด ์žˆ๋‹ค๋ฉด sort() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค.