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

[ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ] H-Index

EarthSea 2024. 4. 15. 09:16

 

 

 

 

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

โœ๐Ÿป ๋ฌธ์ œ ํ’€์ด github ๋งํฌ

 

 

๋ฌธ์ œ ์„ค๋ช…

H-Index๋Š” ๊ณผํ•™์ž์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ์˜ํ–ฅ๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ๊ณผํ•™์ž์˜ H-Index๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ธ h๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ‚ค๋ฐฑ๊ณผ1์— ๋”ฐ๋ฅด๋ฉด, H-Index๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ nํŽธ ์ค‘, h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด hํŽธ ์ด์ƒ์ด๊ณ  ๋‚˜๋จธ์ง€ ๋…ผ๋ฌธ์ด h๋ฒˆ ์ดํ•˜ ์ธ์šฉ๋˜์—ˆ๋‹ค๋ฉด h์˜ ์ตœ๋Œ“๊ฐ’์ด ์ด ๊ณผํ•™์ž์˜ H-Index์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŸ์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด citations๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ด ๊ณผํ•™์ž์˜ H-Index๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

์ œํ•œ์‚ฌํ•ญ

  • ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ์˜ ์ˆ˜๋Š” 1ํŽธ ์ด์ƒ 1,000ํŽธ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๋…ผ๋ฌธ๋ณ„ ์ธ์šฉ ํšŸ์ˆ˜๋Š” 0ํšŒ ์ด์ƒ 10,000ํšŒ ์ดํ•˜์ž…๋‹ˆ๋‹ค.

 

 

์ž…์ถœ๋ ฅ ์˜ˆ

citations return
[3, 0, 6, 1, 5] 3

 

 

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

์ด ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ์˜ ์ˆ˜๋Š” 5ํŽธ์ด๊ณ , ๊ทธ์ค‘ 3ํŽธ์˜ ๋…ผ๋ฌธ์€ 3ํšŒ ์ด์ƒ ์ธ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€ 2ํŽธ์˜ ๋…ผ๋ฌธ์€ 3ํšŒ ์ดํ•˜ ์ธ์šฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ณผํ•™์ž์˜ H-Index๋Š” 3์ž…๋‹ˆ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

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

import Foundation

func solution(_ citations:[Int]) -> Int {
    
    var sortedCitations = citations.sorted(by: >)
    
    for i in (0...sortedCitations[0]).reversed() {
        if sortedCitations.filter{ $0 >= i }.count >= i {
            return i
        } 
    }
    
    return 0
}

์ •๋ ฌ๋ถ€ํ„ฐ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด๋“ค์—ˆ๋‹ค. ์ฒ˜์Œ์—” ๋ฌธ์ œ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ•ด์„œ ๋ฐฐ์—ด์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋…ผ๋ฌธ์˜ ์ธ์šฉ๋œ ๊ฐœ์ˆ˜๋กœ๋งŒ ๊ณ„์‚ฐ์„ ํ•˜์˜€๋Š”๋ฐ, 2๊ฐœ ๋นผ๊ณ  ๋‹ค ํ‹€๋ ธ๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ๋” ๊ผผ๊ผผํžˆ ๋ฌธ์ œ๋ฅผ ์ฝ์–ด๋ณด๋‹ˆ ๊ผญ ๋…ผ๋ฌธ์˜ ์ธ์šฉ๋œ ๊ฐœ์ˆ˜๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŸ์ˆ˜ ์ค‘ ์ตœ๋Œ“๊ฐ’๋ถ€ํ„ฐ 0๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ํ›‘์œผ๋ฉฐ, ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŸ์ˆ˜๊ฐ€ ํ˜„์žฌ์˜ ๋…ผ๋ฌธ์˜ ๊ฐœ์ˆ˜๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋„๋ก ๋กœ์ง์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.

์„ฑ๊ณต์€ ํ•˜์˜€์ง€๋งŒ, ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋‚˜์˜ค๋Š” ๋“ฏํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ์‚ดํŽด๋ณด์•˜๋‹ค.

 

 

๋‚˜์˜ ํ’€์ด ( with. ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด ์ฐธ๊ณ  )

์ด ๋ฌธ์ œ๋Š” ๋ชจ๋“  ๋ฐฐ์—ด์„ ๋Œ๋ฉฐ ํ•ด๋‹น i๋ณด๋‹ค ํฐ ๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด ์•„๋‹ˆ์—ˆ๋‹ค.

๊ฐ€์žฅ ๋งŽ์ด ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด 53๊ฐœ๋ผ๊ณ  ํ•  ๋•Œ, ๊ทธ๋Ÿผ ์ด ๋…ผ๋ฌธ์ด ์ •๋ ฌํ•˜๋Š” ์ฒซ๋ฒˆ์งธ ๋…ผ๋ฌธ์ด ๋œ๋‹ค. 1๋ฒˆ์งธ ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŸ์ˆ˜๊ฐ€ 1 ≤ 58 ์ด๋ฏ€๋กœ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ๋‘๋ฒˆ์งธ๋กœ ๋งŽ์ด ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด 26๊ฐœ๋ผ๊ณ  ํ•  ๋•Œ, 2๋ฒˆ์งธ ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŸ์ˆ˜๊ฐ€ 2 ≤ 26๊ฐœ ์ด๋ฏ€๋กœ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ์„ธ๋ฒˆ์งธ๋Š” 20๊ฐœ, 3 ≤ 20 ๋‹ค์Œ! ๋„ค๋ฒˆ์งธ, 13๊ฐœ → 4 ≤ 13 ๋‹ค์Œ, ๋‹ค์„ฏ๋ฒˆ์งธ, 10 → 5 ≤ 10 ๋‹ค์Œ, ์—ฌ์„ฏ๋ฒˆ์งธ, 4 → 6 > 4 ์ด๋ฏ€๋กœ ์ด ์‚ฌ๋žŒ์˜ h-index๋Š” 5๋ฒˆ์งธ์ด๋‹ค.

ํ•ด๋‹น ๋ฐฐ์—ด์˜ index ๊ฐ’๋ณด๋‹ค ์ธ์šฉํšŸ์ˆ˜๊ฐ€ ํฐ์ง€ ์•ˆํฐ์ง€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ํ•ด๋‹น h-index๋ฅผ ์‚ฐ์ถœํ•˜๋Š” ๋ฐฉ์‹์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ’€์–ด๋ณด์ž.

import Foundation

func solution(_ citations:[Int]) -> Int {
    
    var sortedCitations = citations.sorted(by: >)
    
    for (i, count) in sortedCitations.enumerated() {
        if i+1 <= count {
            continue
        }else {
            return i
        }
    }
    
    return citations.count
}

์‹œ๊ฐ„์ด ํ› ์–ผ์”ฌ ๋น ๋ฅด๋‹ค!