221013_Programmers : ์ •๋ ฌ

Cswยท2022๋…„ 10์›” 13์ผ
0

CodingTest

๋ชฉ๋ก ๋ณด๊ธฐ
6/6

๐Ÿ’ฐ ๊ณ ๋“์  Kit : ์ •๋ ฌ




๐ŸŒž K๋ฒˆ์งธ์ˆ˜

๐ŸšŠ ๋ฌธ์ œ ์„ค๋ช…

  • ๋ฐฐ์—ด array์˜ i๋ฒˆ์งธ ์ˆซ์ž๋ถ€ํ„ฐ j๋ฒˆ์งธ ์ˆซ์ž๊นŒ์ง€ ์ž๋ฅด๊ณ  ์ •๋ ฌํ–ˆ์„ ๋•Œ, k๋ฒˆ์งธ์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด array๊ฐ€ [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3์ด๋ผ๋ฉด

array์˜ 2๋ฒˆ์งธ๋ถ€ํ„ฐ 5๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฅด๋ฉด [5, 2, 6, 3]์ž…๋‹ˆ๋‹ค.
1์—์„œ ๋‚˜์˜จ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋ฉด [2, 3, 5, 6]์ž…๋‹ˆ๋‹ค.
2์—์„œ ๋‚˜์˜จ ๋ฐฐ์—ด์˜ 3๋ฒˆ์งธ ์ˆซ์ž๋Š” 5์ž…๋‹ˆ๋‹ค.

๐Ÿ“ข ๋ฐฐ์—ด arr์—์„œ ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž๋Š” ์ œ๊ฑฐํ•˜๊ณ  ๋‚จ์€ ์ˆ˜๋“ค์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

๐ŸšŠ ์ œํ•œ์‚ฌํ•ญ

  • array์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • array์˜ ๊ฐ ์›์†Œ๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • commands์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 50 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • commands์˜ ๊ฐ ์›์†Œ๋Š” ๊ธธ์ด๊ฐ€ 3์ž…๋‹ˆ๋‹ค.

๐ŸšŠ ์ž…์ถœ๋ ฅ ์˜ˆ

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

  • [1, 5, 2, 6, 3, 7, 4]๋ฅผ 2๋ฒˆ์งธ๋ถ€ํ„ฐ 5๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฅธ ํ›„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. [2, 3, 5, 6]์˜ ์„ธ ๋ฒˆ์งธ ์ˆซ์ž๋Š” 5์ž…๋‹ˆ๋‹ค.
  • [1, 5, 2, 6, 3, 7, 4]๋ฅผ 4๋ฒˆ์งธ๋ถ€ํ„ฐ 4๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฅธ ํ›„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. [6]์˜ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋Š” 6์ž…๋‹ˆ๋‹ค.
  • [1, 5, 2, 6, 3, 7, 4]๋ฅผ 1๋ฒˆ์งธ๋ถ€ํ„ฐ 7๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฆ…๋‹ˆ๋‹ค. [1, 2, 3, 4, 5, 6, 7]์˜ ์„ธ ๋ฒˆ์งธ ์ˆซ์ž๋Š” 3์ž…๋‹ˆ๋‹ค.

๐Ÿ“‘ Code : ๋‚ด๊บผ

๐Ÿ“Œ Logic ์„ค๋ช…

  1. ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ commands์˜ ๊ฐ ์š”์†Œ command๋ฅผ ๊บผ๋‚ด์˜ด
  2. command ๋‚ด์˜ ๊ฐ ์š”์†Œ๋Š” ๊ธฐ์กด array๋ฅผ ์Šฌ๋ผ์ด์‹ฑํ•  start, end, ๊ทธ๋ฆฌ๊ณ  ์Šฌ๋ผ์ด์‹ฑ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌ ํ›„ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ์„ ์š”์†Œ์˜ ์ˆœ์„œ๋ฅผ ์˜๋ฏธ
  3. ๋‹จ, start, end, index๋Š” ์ˆœ๋ฒˆ์ด ์•„๋‹Œ Index No.์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๊ทธ์— ๋งž๊ฒŒ ์กฐ์ •ํ•ด์ค˜์•ผ ํ•จ.
  4. list comprehension์„ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑ
  5. ์œ„์˜ ๋กœ์ง์„ ์ˆœ์„œ๋Œ€๋กœ ๊ตฌํ˜„
> code
def solution(array, commands):
    return  [sorted(array[start-1:end])[index-1] for start,end,index in commands]

๐Ÿ“‘ Code : ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊บผ

-

  • ์—†์Œ
> code

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

๐Ÿ“Œ -

> code



๐ŸŒž ๊ฐ€์žฅ ํฐ ์ˆ˜

๐ŸšŠ ๋ฌธ์ œ ์„ค๋ช…

  • 0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด ์ฃผ์„ธ์š”.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6210์ž…๋‹ˆ๋‹ค.

๐Ÿ“ข 0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ˆœ์„œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

๐ŸšŠ ์ œํ•œ์‚ฌํ•ญ

  • numbers์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • numbers์˜ ์›์†Œ๋Š” 0 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ •๋‹ต์ด ๋„ˆ๋ฌด ํด ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•ฉ๋‹ˆ๋‹ค.

๐ŸšŠ ์ž…์ถœ๋ ฅ ์˜ˆ

๐Ÿ“‘ Code : ๋‚ด๊บผ

๐Ÿ“Œ Logic ์„ค๋ช…

  1. ์ฃผ์–ด์ง„ ์ˆซ์ž๋“ค์„ ์•ž์ž๋ฆฌ ์ˆ˜๊ฐ€ ํฐ ๊ฒƒ๋ถ€ํ„ฐ ์•ž์— ๋ฐฐ์—ดํ•ด์•ผ ๊ทธ๊ฒƒ๋“ค์„ ์ด์–ด ๋ถ™์˜€์„ ๋•Œ ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ๋‚˜์˜ด.
  2. ๊ทธ๊ฒƒ์„ ์œ„ํ•ด ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์ˆซ์ž๋“ค์˜ ํƒ€์ž…์„ int ๊ฐ€ ์•„๋‹Œ str ์œผ๋กœ ๋ณ€ํ™˜
  3. ๊ทธ ๋‹ค์Œ์— ๋ฆฌ์ŠคํŠธ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•˜๊ฒŒ ๋˜๋ฉด, ์•ž์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ํฐ ๊ฒƒ๋ถ€ํ„ฐ ์ •๋ ฌํ•˜๊ฒŒ ๋จ.
  4. ๊ทธ๋Ÿฌ๋‚˜ ์œ„์˜ ๋ฐฉ์‹๋Œ€๋กœ ํ•˜๊ฒŒ ๋˜๋ฉด 3, 30, 34๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ 34, 30, 3 ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๊ฒŒ ๋˜๊ณ  ์ด๋Š” 34, 3, 30 ์„ ์ด์–ด ๋ถ™์ธ ์ˆซ์ž๋ณด๋‹ค ์ž‘๊ฒŒ๋จ. (34303 < 34330)
  5. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์ˆซ์ž๋ฅผ 3๋ฒˆ ์ด์–ด ๋ถ™์—ฌ์„œ ์ตœ์†Œ 3์ž๋ฆฌ ์ด์ƒ์˜ ์ˆซ์ž๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ๊ฐ’๋“ค์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋จ.
    • ์™œ๋ƒํ•˜๋ฉด, ์ œํ•œ ์‚ฌํ•ญ์— numbers์˜ ์›์†Œ๋Š” 1000 ์ดํ•˜์˜ ์ˆซ์ž๋ผ๋Š” ๋‚ด์šฉ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ
    • ['3', '30', '34']์˜ ๊ฒฝ์šฐ, ๊ฐ ์š”์†Œ๋ฅผ 3๋ฒˆ์”ฉ ์ด์–ด ๋ถ™์ด๋ฉด '333', '303030', '343434' ์ด ๋˜๊ณ , ์ด๋ฅผ ๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ๋ผ๋Š” ๊ธฐ์ค€์œผ๋กœ ์—ญ์ˆœ ์ •๋ ฌํ•˜๋ฉด '343434' > '333' > '303030' ์ˆœ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์ŠคํŠธ ์ •๋ ฌ ๊ฒฐ๊ณผ๊ฐ€ ['34', '3', 30']์ด ๋จ.
  • ์ฆ‰, 1 > 2 > 5 ์ˆœ์„œ๋Œ€๋กœ ๋™์ž‘ํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋จ.
> code
def solution(numbers):
	# ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
    numbers = list(map(str, numbers))
    # lambda ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ ์š”์†Œ๋ฅผ 3๋ฒˆ์”ฉ ์ด์–ด๋ถ™์ธ ๊ฒฐ๊ณผ์˜ ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ฒŒ ๋จ.
    numbers.sort(key=lambda x: x * 3, reverse=True)
    # ๋ฆฌ์ŠคํŠธ ๋‚ด์˜ ๋ฌธ์ž์—ด์„ ์ด์–ด๋ถ™์ธ ๋’ค ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ ํ›„ ๋‹ค์‹œ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
    return str(int(''.join(numbers)))

๐Ÿ“‘ Code : ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊บผ

๐Ÿ’ก ๋‘ ์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜์—ฌ 1/0/-1์„ ๋ฐ˜ํ™˜ํ•˜๋Š” comparator ํ•จ์ˆ˜ ์ƒ์„ฑ

๐Ÿ’ก functools ๋ชจ๋“ˆ์˜ cmp_to_key ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‚ด๊ฐ€ ๋งŒ๋“  ํ•จ์ˆ˜๋กœ ์ปค์Šคํ…€ ์ •๋ ฌ

  • return ๊ฐ’์€ ํ•ญ์ƒ 1/0/-1 ์ด์–ด์•ผ ํ•จ.
    • 1 : ์ •๋ ฌ ๊ธฐ์ค€๋Œ€๋กœ ์•ž์œผ๋กœ ๊ฐ€๊ธฐ ์œ„ํ•ด True๋ฅผ ์˜๋ฏธ
    • -1 : ์ •๋ ฌ ๊ธฐ์ค€๊ณผ ๋ฐ˜๋Œ€๋กœ ๊ฐ€์„œ ๋’ค๋กœ ๊ฐ€๊ธฐ ์œ„ํ•ด False๋ฅผ ์˜๋ฏธ
    • 0 : 0์€ ์•„์˜ˆ ์ •๋ ฌ ๊ธฐ์ค€์— ํ•ด๋‹น๋˜์ง€ ์•Š์•„ ๊ทธ๋Œ€๋กœ ์žˆ์„ ๋•Œ๋ฅผ

๐Ÿ’ก ์ฐธ๊ณ  :

[Python] ์ปค์Šคํ…€ํ•œ ๊ธฐ์ค€์œผ๋กœ sort()ํ•˜๊ธฐ : cmp_to_key()

> code
import functools

# ์ปค์Šคํ…€ ์ •๋ ฌ ํ•จ์ˆ˜ comparator ์ƒ์„ฑ
def comparator(a,b):
	print(f"a:{a}")
    print(f"b:{b}")
	# t1 : ๋‘ ๋ฌธ์ž์—ด์˜ ์ˆ˜๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ด์–ด ๋ถ™์ธ ๊ฒฐ๊ณผ
    t1 = a+b
    # t2 : ๋‘ ๋ฌธ์ž์—ด์˜ ์ˆ˜๋ฅผ ๋ฐ˜๋Œ€๋กœ ์ด์–ด ๋ถ™์ธ ๊ฒฐ๊ณผ
    t2 = b+a
    
    print(f"int(t1) > int(t2) : {int(t1) > int(t2)}")
    print(f"int(t1) < int(t2) : {int(t1) < int(t2)}")
    print(f"๋น„๊ต ๊ฒฐ๊ณผ : {result}")
    print("==============================================")
    
    # t1์˜ ์ˆซ์ž๊ฐ’์ด ๋” ํฌ๋‹ค๋ฉด 1 : ๋” ํฐ ๊ฐ’์ด ๋’ค๋กœ ์ด๋™
    # t2์˜ ์ˆซ์ž๊ฐ’์ด ๋” ํฌ๋‹ค๋ฉด -1  : ๋” ํฐ๋†ˆ์ด ์•ž์œผ๋กœ ์ด๋™
    # ๋‘ ๊ฐ’์ด ๋™์ผํ•˜๋‹ค๋ฉด 0 : ์ˆœ์„œ๋Š” ๊ธฐ์กด๊ณผ ๋™์ผ
    return (int(t1) > int(t2)) - (int(t1) < int(t2)) 

def solution(numbers):
    n = [str(x) for x in numbers]
    n = sorted(n, key=functools.cmp_to_key(comparator),reverse=True)
    answer = str(int(''.join(n)))
    return answer

๐Ÿ”Ž ์˜ˆ์‹œ๋ฅผ ํ†ตํ•œ ํ™•์ธ

  • ์œ„์˜ ์ฝ”๋“œ์—๋Š” print ๋ฌธ์ด ๋ชจ๋‘ ๋‹ฌ๋ ค์žˆ๋Š”๋ฐ, ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ๋Œ๋ ค๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด.
    ์˜ˆ์‹œ๋ฅผ ํ†ตํ•œ ์ถœ๋ ฅ ๋‚ด์šฉ ํ™•์ธ
numbers = [3, 30, 34, 5, 9]
solution(numbers)


--- ์ถœ๋ ฅ ๊ฒฐ๊ณผ ---

a:5
b:9
int(t1) > int(t2) : False
int(t1) < int(t2) : True
๋น„๊ต ๊ฒฐ๊ณผ : -1
==============================================
a:34
b:5
int(t1) > int(t2) : False
int(t1) < int(t2) : True
๋น„๊ต ๊ฒฐ๊ณผ : -1
==============================================
a:30
b:34
int(t1) > int(t2) : False
int(t1) < int(t2) : True
๋น„๊ต ๊ฒฐ๊ณผ : -1
==============================================
a:3
b:30
int(t1) > int(t2) : True
int(t1) < int(t2) : False
๋น„๊ต ๊ฒฐ๊ณผ : 1
==============================================
a:3
b:5
int(t1) > int(t2) : False
int(t1) < int(t2) : True
๋น„๊ต ๊ฒฐ๊ณผ : -1
==============================================
a:3
b:34
int(t1) > int(t2) : False
int(t1) < int(t2) : True
๋น„๊ต ๊ฒฐ๊ณผ : -1
==============================================
a:3
b:30
int(t1) > int(t2) : True
int(t1) < int(t2) : False
๋น„๊ต ๊ฒฐ๊ณผ : 1
==============================================


--- return ๊ฐ’ ---
'9534330'



๐ŸŒž H-Index

๐ŸšŠ ๋ฌธ์ œ ์„ค๋ช…

  • 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ํšŒ ์ดํ•˜์ž…๋‹ˆ๋‹ค.

๐ŸšŠ ์ž…์ถœ๋ ฅ ์˜ˆ

์ž…์ถœ๋ ฅ ์˜ˆ

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

๐Ÿ“‘ Code : ๋‚ด๊บผ

Code 1

๐Ÿ“Œ Logic ์„ค๋ช…

์ฝ”๋“œ์— ์ง์ ‘ ์ ์Œ

> code 1
def solution(citations):
    # ์ธ์šฉ์ด ์ ๊ฒŒ ๋œ ๋…ผ๋ฌธ๋“ค๋ถ€ํ„ฐ ์„œ์นญํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ ฌ
    citations.sort()
    # idx : ๋‚˜๋ณด๋‹ค ์ธ์šฉ๋œ ์ˆ˜๊ฐ€ ์ ์€ ๋…ผ๋ฌธ์˜ ์ˆ˜
    # citation : ๋…ผ๋ฌธ์˜ ์ธ์šฉ๋œ ํšŸ์ˆ˜
    for idx , citation in enumerate(citations):
        # ์ธ์šฉ๋œ ํšŸ์ˆ˜๊ฐ€ ๋‚จ์€ ๋…ผ๋ฌธ์˜ ์ˆ˜(๋‚˜๋ฅผ ํฌํ•จํ•œ)๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด
        if citation >= len(citations) - idx :
            # ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆซ์ž๋ฅผ return
            return len(citations) - idx
    # ๋…ผ๋ฌธ์ด 1ํŽธ๋ฐ–์— ์—†๋Š” ๊ฒฝ์šฐ
    return 0

Code 2

๐Ÿ“Œ Logic ์„ค๋ช…

์—ฌ๊ธฐ ์‚ฌ์ดํŠธ ๋‚ด์šฉ ์ฐธ๊ณ 

> code 2
def solution(citations):
    # ์ธ์šฉ์ด ๋งŽ์ด ๋œ ๋…ผ๋ฌธ๋“ค๋ถ€ํ„ฐ ์„œ์นญํ•˜๊ธฐ ์œ„ํ•ด ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ
    citations.sort(reverse=True)
    print(f"citations : {citations}")
    print("=======~~=======")
    for idx, citation in enumerate(citations):
        print(f"idx : {idx}")
        print(f"citation : {citation}")
        print("========")
        # H-Index๋ฅผ idx๋ผ๊ณ  ๊ฐ€์ •
        # citation : ๋‚˜๋จธ์ง€ ๋…ผ๋ฌธ๋“ค์ด ์ธ์šฉ๋œ ํšŸ์ˆ˜ ์ค‘ ์ตœ๋Œ“๊ฐ’
        # ๋‚˜๋จธ์ง€ ๋…ผ๋ฌธ๋“ค์ด ์ธ์šฉ๋œ ํšŸ์ˆ˜ ์ค‘ ์ตœ๋Œ“๊ฐ’์ด idx๋ฒˆ ์ดํ•˜์ธ ์ตœ์ดˆ์˜ ๊ฒฝ์šฐ๋ฅผ ์ฐพ์Œ.
        if idx >= citation:
            # idx๋ฅผ ๋ฐ˜ํ™˜
            return idx
    print(f"citations : {citations}")
    print("--------")
    # citations๋ฅผ ๋ชจ๋‘ ์„œ์นญํ•˜์˜€๋Š”๋ฐ H-Index ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด ์—†๋‹ค๋ฉด
	# citations์˜ ๊ธธ์ด๋ณด๋‹ค ์ž‘์€ ๊ฐ’์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ 2๊ฐˆ๋ž˜๋กœ ๊ตฌ๋ถ„์ง€์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—
	# citations์˜ ๊ธธ์ด๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ๋Š” H-Index
    return len(citations)

๐Ÿ”Ž ์˜ˆ์‹œ๋ฅผ ํ†ตํ•œ ํ™•์ธ

  • ์œ„์˜ ์ฝ”๋“œ์—๋Š” print ๋ฌธ์ด ๋ชจ๋‘ ๋‹ฌ๋ ค์žˆ๋Š”๋ฐ, ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ๋Œ๋ ค๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด.
    ์˜ˆ์‹œ๋ฅผ ํ†ตํ•œ ์ถœ๋ ฅ ๋‚ด์šฉ ํ™•์ธ
citations = [6, 5, 5, 5, 3, 2, 1, 0]
solution(citations)


--- ์ถœ๋ ฅ ๊ฒฐ๊ณผ ---

citations : [6, 5, 5, 5, 3, 2, 1, 0]
=======~~=======
idx : 0
citation : 6
========
idx : 1
citation : 5
========
idx : 2
citation : 5
========
idx : 3
citation : 5
========
idx : 4
citation : 3
========


--- return ๊ฐ’ ---
'9534330'

๐Ÿ“‘ Code : ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊บผ

Code 1

  • ๋ฌธ์ œ ์กฐ๊ฑด์„ ์ œ์ผ ์ง๊ด€์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ์ฝ”๋“œ
  • ๊ทธ๋Ÿฌ๋‚˜, ์ฃผ์–ด์ง„ citations ๋ฐฐ์—ด์„ ๋ชจ๋‘ ์ˆœํšŒํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ข‹์€ ์ฝ”๋“œ๋Š” ์•„๋‹˜.
> code
    def solution(citations):
        # ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด max_๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉ
        # ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด ์ƒ๊ธธ๋•Œ๋งˆ๋‹ค ์ตœ๋Œ€๊ฐ’์œผ๋กœ ๊ฐฑ์‹ ํ•˜์—ฌ 
        max_ = 0
        # ์ธ์šฉ๋œ ๋…ผ๋ฌธ ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒƒ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ
        citations.sort(reverse=True)
        # index๋ฅผ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ด์œ ๋Š”, ๋‚˜๋ฅผ ํฌํ•จํ•œ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•จ
        for index, citation in enumerate(citations, start=1):
            # index : ์ง€๊ธˆ citation๋ณด๋‹ค ์ธ์šฉ๋œ ํšŸ์ˆ˜๊ฐ€ ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๋…ผ๋ฌธ์˜ ์ˆ˜
            print(f"index : {index}")
            # citation : ๋…ผ๋ฌธ์˜ ์ธ์šฉ๋œ ํšŸ์ˆ˜
            print(f"citation : {citation}")
            # (ํ˜„์žฌ ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŒ์ˆ˜)๊ฐ€ (ํ˜„์žฌ ๋…ผ๋ฌธ์˜ ์ธ์šฉ๋œ ํšŸ์ˆ˜ ์ด์ƒ์œผ๋กœ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆ˜)๋ณด๋‹ค ๋” ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด
            if citation >= index:
                # H_index๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ›„๋ณด๋กœ ๊ฐฑ์‹ 
                # index๋Š” 1๋ถ€ํ„ฐ ์ ์ฐจ ์ปค์ง€๊ณ , ์ตœ์ข…์ ์œผ๋กœ ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด max_์— ์ €์žฅ๋˜๋ฏ€๋กœ
                # ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ ํ›„ ๊ฒฐ๊ตญ max_ ๊ฐ’์€ H-Index๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด ๋จ.
                max_ = index
                print(f"answer : {answer}")
        return answer

Code 2

  • ํ˜„์žฌ ๋…ผ๋ฌธ๋ณด๋‹ค ์ธ์šฉ์ด ๋งŽ์ด ๋œ ๋…ผ๋ฌธ์˜ ํšŸ์ˆ˜๋ฅผ ๋ฐ”๋กœ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ
  • enumerate์˜ ์‹œ์ž‘์„ 1๋กœ ๋งž์ถค์œผ๋กœ์จ, ๋ฐฐ์—ด์˜ idx ์š”์†Œ ๊ฐ’ ๊ฐ๊ฐ์ด ๋ฐ”๋กœ ๋‚˜๋ณด๋‹ค ์ธ์šฉ์ด ๋งŽ์ด๋œ ๋…ผ๋ฌธ์˜ ํšŸ์ˆ˜๋ฅผ ๋œปํ•˜๊ฒŒ ๋จ.
> code
    def solution(citations):
        citations.sort(reverse=True)
        answer = max(map(min, enumerate(citations, start=1)))
        return answer
  • ์˜ˆ์‹œ

    • citation = [1,6,2,4,0] ์ธ ๊ฒฝ์šฐ, ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด [6,5,4,1,0]์ด ๋˜๊ณ ,
    • enumerate(citations, start=1) ํ•จ์ˆ˜ ๋กœ ์ธํ•ด (1,6), (2,5), (3,4), (4,1), (5,0) ์™€ ๊ฐ™์€ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ.
    • map(min, enumerate(citations, start=1))์˜ ๊ฒฐ๊ณผ, (1,2,3,1,0)์ด๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ.
    • ๊ฒฐ๊ณผ์ ์œผ๋กœ 3์ด return๋จ.
  • ํ•ด์„

    • ์œ„์˜ ์ฝ”๋“œ๋Š” ๊ฐ๊ฐ์˜ (idx, citation) ๊ฐ์ฒด์— ๋Œ€ํ•ด x = 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ y = index, y = citation ๋ผ๊ณ  ํ•˜๋Š” ์ผ์ฐจ ํ•จ์ˆ˜๋ฅผ ๊ทธ๋ฆฐ ํ›„, ๊ฐ๊ฐ์˜ x๊ฐ’์— ๋Œ€ํ•ด y๊ฐ’์˜ min ๊ฐ’๋“ค๋งŒ ์ฒดํฌํ•œ ๋‹ค์Œ์— ๊ทธ ์ค‘์—์„œ max ๊ฐ’์„ ์ฐพ์€ ๊ฒฐ๊ณผ์ž„.
    • https://ssuamje.tistory.com/47
      โ†’ ์ด ๋ธ”๋กœ๊ทธ์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด ๋” ์ž์„ธํžˆ ์ ํ˜€ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•  ๊ฒƒ.

๐Ÿ’ก

๐Ÿ“Œ



0๊ฐœ์˜ ๋Œ“๊ธ€