๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฒ ์ŠคํŠธ ์•จ๋ฒ” Swift

by Fomagran ๐Ÿ’ป 2020. 12. 10.
728x90
๋ฐ˜์‘ํ˜•

Source Code


Solution


ํ•ด๋‹น ๋ฌธ์ œ๋Š” ํ•ด์‰ฌ๋ฌธ์ œ์˜€๋‹ค.(Swift๋กœ ๋”ฐ์ง€๋ฉด Dictionary๋ฅผ ์‚ฌ์šฉํ•ด ํ’€์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ)

 

1. ๊ฐ ์žฅ๋ฅด๋ฅผ ํ‚ค๊ฐ’์œผ๋กœ ์žฅ๋ฅด๊ฐ€ ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฐธ๋ฅ˜๊ฐ’์œผ๋กœ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋‹ด์•„์ค€๋‹ค.

 

2. 1์—์„œ ๋‹ด์€ ์ธ๋ฑ์Šค๋“ค์€ ํ”Œ๋ ˆ์ด ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ํฐ 2๊ฐœ์˜ ์ธ๋ฑ์Šค๋งŒ ๋‹ด์•„์ค€๋‹ค.

 

3. ๊ฐ ์žฅ๋ฅด๋ฅผ ํ‚ค๊ฐ’์œผ๋กœ ํ•˜๊ณ  ๊ฐ ์žฅ๋ฅด์˜ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ํ”Œ๋ ˆ์ด ๊ฐ’์˜ ์ดํ•ฉ์„ ๋ฐธ๋ฅ˜๊ฐ’์œผ๋กœ ๊ฐ–๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋‹ด์•„์ค€๋‹ค.

 

4. ์ดํ•ฉ์ด ๊ฐ€์žฅ ๋†’์€ ์ˆœ์œผ๋กœ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ •๋ ฌํ•ด์ค€๋’ค ์ธ๋ฑ์Šค๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐธ๋ฅ˜๊ฐ’๋“ค์„ ๊ฐ ์žฅ๋ฅด๋ณ„๋กœ ๋ชจ์•„์ค€ ๋‹ค์Œ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.

 

Problem


 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฒ ์ŠคํŠธ์•จ๋ฒ”

์ŠคํŠธ๋ฆฌ๋ฐ ์‚ฌ์ดํŠธ์—์„œ ์žฅ๋ฅด ๋ณ„๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์žฌ์ƒ๋œ ๋…ธ๋ž˜๋ฅผ ๋‘ ๊ฐœ์”ฉ ๋ชจ์•„ ๋ฒ ์ŠคํŠธ ์•จ๋ฒ”์„ ์ถœ์‹œํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋ž˜๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉฐ, ๋…ธ๋ž˜๋ฅผ ์ˆ˜๋กํ•˜๋Š” ๊ธฐ์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์†ํ•œ ๋…ธ๋ž˜๊ฐ€

programmers.co.kr

์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ๊ฒƒ

 

๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋‹ด์€๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค๊ฐ€ ์—†๊ณ  ์ˆœ์„œ๋„ ๋žœ๋ค์œผ๋กœ ๋ฐฐ์น˜๋œ๋‹ค.

 

๊ณ ๋กœ ๋ฐฐ์—ด์— ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋‹ด์•„์„œ ์ •๋ ฌ์„ ํ•ด์ฃผ์–ด์•ผ ๋œ๋‹ค.

 

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import Foundation
 
 
class Album {
    var index : Int
    var playTime : Int
 
    init(_ index : Int, _ playTime : Int) {
 
        self.index = index
        self.playTime = playTime
    }
}
 
func solution(_ genres:[String], _ plays:[Int]) -> [Int] {
 
    var albumDic = [String : [Album]]()
 
    plays
    .enumerated()
    .map     { (genres[$0], Album($0, $1)) }
    .forEach { albumDic[$0, default: [Album]() ].append($1) }
 
    return albumDic
    .sorted {
        $0.value.reduce(0, { $0 + $1.playTime }) > $1.value.reduce(0, { $0 + $1.playTime })
    }
    .map { _, albums -> [Intin
          guard albums.count > 1 else { return [albums[0].index] }
          let sorted = albums.sorted(by: { $0.playTime > $1.playTime} )
          return [sorted[0].index, sorted[1].index]}
    .reduce(into: [Int]()) { $0.append(contentsOf : $1) }
}

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ํšจ์œจ์„ฑ ๋น„๊ต

 

์ขŒ์ธก ๋‚ด ์ฝ”๋“œ ์šฐ์ธก ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ

 

๊ทธ๋ž˜๋„ ์ด๋ฒˆ์—๋Š” ๋น„์Šท๋น„์Šทํ•˜๊ฒŒ ๋‚˜์™”๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€