[ 2023-05-24 ๐ŸŸ TIL ]

Burkeyยท2023๋…„ 5์›” 24์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
85/157

LV.2 ์‹œ์†Œ ์ง๊ฟ


๋ฌธ์ œ๋งํฌ

from collections import Counter


def solution(weights):
    answer = 0
    w_counter = Counter(weights)
    
    # ์˜ˆ์ œ์— ๊ฐ’์ฒ˜๋Ÿผ ๋™์ผ ํ•œ ๊ฐ’์ด 2๊ฐœ ์ด์ƒ์ผ ๋•Œ ๊ณ„์‚ฐํ•  ์ฝ”๋“œ ๐Ÿ‘‡
    for w, c in w_counter.items():
        if c >= 2:  # ๊ฐ™์€ ๋ฌด๊ฒŒ๋กœ 2๊ฐœ ์ด์ƒ์ด๋ฉด nC2์œผ๋กœ ๊ณ„์‚ฐ
            answer += (c * (c - 1)) // 2
    weights = set(weights)  # ๊ฐ™์€ ๋ฌด๊ฒŒ๋ฅผ ๊ฐ€์ง„ (์ค‘๋ณต)์ œ๊ฑฐ
    
    # ์„œ๋กœ ๋‹ค๋ฅธ ๋ฌด๊ฒŒ๊ฐ€ 2/3, 2/4, 3/4 ๋น„์œจ์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ๋ฅผ ์ฐพ๋Š” ์ฝ”๋“œ ๐Ÿ‘‡
    for w in weights:
      # w๋ฌด๊ฒŒ์— 2/3, 2/4, 3/4์— ํ•ด๋‹นํ•˜๋Š” w์˜ ๊ฐฏ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ๊ณ„์‚ฐ ๊ฐ€๋Šฅ
        if (w * 2/3) in weights:
            answer += w_counter[w*2/3] * w_counter[w]
            # w๋ฌด๊ฒŒ๋ฅผ ๊ฐ€์ง„ ๊ฐฏ์ˆ˜์™€ w*2/3๊ฐ’์„ ๊ฐ€์ง„ ๊ฐฏ์ˆ˜์˜ ๊ณฑ
            # ex) [180, 270, 100, 270] ์ธ ๋ฐฐ์—ด์ผ ๋•Œ
            # 270์˜ 2/3์ธ 180์ด 2๊ฐœ ์žˆ๋‹ค. 
            # 270๋„ 2๊ฐœ ์žˆ์œผ๋‹ˆ 2 * 2 ๋œ๋‹ค.
        if (w * 2/4) in weights:
            answer += w_counter[w*2/4] * w_counter[w]
        if (w * 3/4) in weights:
            answer += w_counter[w*3/4] * w_counter[w]

    return answer

ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๊ฒ€์ƒ‰์„ ํ†ตํ•ด์„œ ํ•ด๊ฒฐํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
์•„์ง ์ €๋„ ์ดํ•ด๊ฐ€ 85%์ •๋„..? ํ’€์ด๊ฐ€ ํ‹€๋ ธ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”..๐ŸงŽ๐Ÿปโ€โ™‚๏ธ

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

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