๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โŒจ๏ธ Language/swift

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.0 ์ตœ๋นˆ๊ฐ’ ๊ตฌํ•˜๊ธฐ

by hyebin (Helia) 2022. 11. 30.
๋ฐ˜์‘ํ˜•
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.0 ๋ชจ์Œ

์ตœ๋นˆ๊ฐ’ ๊ตฌํ•˜๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

์ตœ๋นˆ๊ฐ’์€ ์ฃผ์–ด์ง„ ๊ฐ’ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋‚˜์˜ค๋Š” ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด array๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ๋นˆ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ ์‚ฌํ•ญ

  • 0 < array์˜ ๊ธธ์ด < 100
  • 0 ≤ array์˜ ์›์†Œ < 1000

์ž…์ถœ๋ ฅ ์˜ˆ

array result
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • [1, 2, 3, 3, 3, 4]์—์„œ 1์€ 1๊ฐœ 2๋Š” 1๊ฐœ 3์€ 3๊ฐœ 4๋Š” 1๊ฐœ๋กœ ์ตœ๋นˆ๊ฐ’์€ 3์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • [1, 1, 2, 2]์—์„œ 1์€ 2๊ฐœ 2๋Š” 2๊ฐœ๋กœ ์ตœ๋นˆ๊ฐ’์ด 1, 2์ž…๋‹ˆ๋‹ค. ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ์ด๋ฏ€๋กœ -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • [1]์—๋Š” 1๋งŒ ์žˆ์œผ๋ฏ€๋กœ ์ตœ๋นˆ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

์ œ์ถœ

import Foundation

func solution(_ array:[Int]) -> Int {
    var dict = [Int: Int]()

    for a in array{
        dict[a, default: 0] += 1
    }

    let max = dict.max{$0.value <= $1.value}!

    return dict.values.filter{$0 == max.value}.count > 1 ? -1 : max.key
}
๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์„ ์–ธํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ key ๊ฐ’์œผ๋กœ, ๊ฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ value ๊ฐ’์œผ๋กœ ์ €์žฅํ•œ๋‹ค.
๋”•์…”๋„ˆ๋ฆฌ์—์„œ value๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ์•„ ๊ฐ€์žฅ ํฐ value๋ฅผ ๊ฐ€์ง„ key๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด -1์„, ์•„๋‹ˆ๋ผ๋ฉด key๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๋‹ค๋ฅธ ํ’€์ด

func solution(_ array: [Int]) -> Int {
    let sorted = Dictionary(grouping: array) { $0 }.sorted { $0.value.count > $1.value.count }
    return sorted.count > 1 && sorted[0].value.count == sorted[1].value.count ? -1 : sorted[0].key
}
๋ฐฐ์—ด์„ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๊ทธ๋ฃนํ•‘ํ•œ ํ›„ value์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
์ •๋ ฌํ•œ ๋ฐฐ์—ด์—์„œ ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜์™€ ๋‘ ๋ฒˆ์งธ ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด -1์„, ์•„๋‹ˆ๋ผ๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด์˜ ํ‚ค๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๋ฐ˜์‘ํ˜•