[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์Šคํƒ€ ์ˆ˜์—ด / ํŒŒ์ด์ฌ
Problem Solving ๐Ÿ”ฅ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์Šคํƒ€ ์ˆ˜์—ด / ํŒŒ์ด์ฌ

https://programmers.co.kr/learn/courses/30/lessons/70130#

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์Šคํƒ€ ์ˆ˜์—ด

 

programmers.co.kr

์ตœ๊ทผ์— ์ผ์„ ์‹œ์ž‘ํ•ด์„œ(์‚ฌ์‹ค์€ ๊ท€์ฐฎ์•„์„œ.. ์ผ์ˆ˜๋„..) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ค๋Š˜์€ ์„ค์—ฐํœด๋ผ ํ‘น ์‰ฌ๊ณ  ๋ฐค์— ์ž๊ธฐ ์ „์—, ์ด๋Œ€๋กœ ์ž๋ฉด ์•ˆ๋  ๊ฒƒ ๊ฐ™๋‹ค..๋Š” ์ƒ๊ฐ์— ํ•œ ๋ฌธ์ œ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค.
๋‚ด์ผ์€ ๊ผญ ๋‘ ๊ฐœ ํ’€์–ด์•ผ์ง€..

ํ’€์ด ๋ฐฉ๋ฒ•์€ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹น์—ฐํžˆ ์ตœ๋นˆ๊ฐ’๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค!

๊ทธ๋ฆฌ๊ณ , ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์ผ€์ด์Šค๋Š” ๋ฐฐ์ œํ•˜๋ฉด ์‹œ๊ฐ„ ๋‚ด์— ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

from collections import Counter

def solution(a):
    answer = 0

    # ์ตœ๋นˆ๊ฐ’
    common = Counter(a).most_common()
    n = len(a)

    for (fval, count) in common:
        ret = 0
        idx = 0

        # ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์ผ€์ด์Šค. ์ข…๋ฃŒ.
        if count * 2 < answer:
            break

        while idx < n:
            if a[idx] != fval:
                if idx + 1 < n and a[idx+1] == fval:
                    ret += 2
                    idx += 2
                else:
                    idx += 1
            else:
                if idx + 1 < n:
                    if a[idx+1] != fval:
                        ret += 2
                        idx += 2
                    else:
                        idx += 1
                else:
                    idx += 1
        answer = max(answer, ret)
    return answer