ํ’€์ด

์–ด๋–ป๊ฒŒ ํ•ด์•ผ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ์„๊นŒ.

  • ์ผ๋‹จ ์กฐํ•ฉ๊ณผ ๊ฐ™์€ ์ƒ๊ฐ์€ n์ด ์ž‘์„ ๋•Œ ํ•œ๋‹ค.
  • ์™„์ „ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์„ ๋จผ์ € ์ƒ๊ฐํ•œ๋‹ค.
  • ์ˆœ์ฐจ์ ์ธ ๋ฐฉ๋ฒ• (indexing) ์ƒ๊ฐ
  • ๋ฌธ์ œ๋ฅผ ์ œ๋Œ€๋กœ ์ฝ๊ธฐ

์ผ๋‹จ ์ฒ˜์Œ์—๋Š” ๋ชจ๋“  ๊ฐ€์ง€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ , ์ด์— ๋Œ€ํ•ด 2์”ฉ ์ ‘๊ทผํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด์•ผ ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฒ˜์Œ์— ๊ธ€์„ ์ž˜๋ชป์ฝ์–ด์„œ 2์”ฉ ๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  2์˜ ๋ฐฐ์ˆ˜๋งŒํผ ๋ชจ๋‘ ํ™•์ธํ–ˆ์„ ๋•Œ ๊ฒฐ์ •์ด ๋˜๋Š” ์ค„ ์•Œ์•˜๋‹ค.

์• ์ดˆ์— ๊ทธ๋ฆฌ๋””ํ•œ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์ด ์ข€ ๋ˆˆ์— ๋ณด์˜€๋‹ค. ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ์•ˆํ’€์–ด๋ด์„œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•  ์ง€ ๊ฐ์„ ๋ชป์žก์€ ๊ฒƒ ๊ฐ™๋‹ค.

์ผ๋‹จ 2์”ฉ ๋ณด๋ฉด์„œ, ์ ์–ด๋„ ํ•˜๋‚˜์˜ ๊ต์ง‘ํ•ฉ ์›์†Œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์—์„œ ํ‚ค์›Œ๋“œ๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ํ‚ค๋ฅผ ์ œ์•ˆํ•œ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ œ์•ˆํ•œ key์— ๋Œ€ํ•ด ๊ฐ€๋Šฅํ•œ ํ›„๋ณด๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๊ฐ€๋Šฅํ•œ ํ›„๋ณด๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ธธ์ด๋ฅผ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ๋ฌธ์ž์— ๋Œ€ํ•ด ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ์ฐพ์•˜์„ ๋•Œ, ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ถ€๋ถ„ ์ˆ˜์—ด๊ณผ ์„œ๋กœ ๊ธธ์ด๊ฐ€ ๊ฐ™์€์ง€ ํŒ๋‹จํ•ด์•ผ ํ•œ๋‹ค.

1 0 0 1 0 0 1 0

1 0 0 1 0 1
1 0 0 1 1 0

1์„ ๊ต์ง‘ํ•ฉ ์›์†Œ๋กœ ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ๊ธด ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ›„๋ณด๋Š” ์œ„์™€ ๊ฐ™๋‹ค. ์ˆ˜์—ด์€ ๋‹ฌ๋ผ๋„ ๊ธธ์ด๋Š” ๊ฐ™๋‹ค. ์ด ๋ถ€๋ถ„์„ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ์ด๋ถ€๋ถ„์ด ํ™•๋ฆฝ์ด ๋˜์—ˆ๋‹ค๋ฉด, ๋ฐฐ์—ด์•ˆ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์›์†Œ์— ๋Œ€ํ•ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฐ€์žฅ ๊ธด ์ˆ˜์—ด์„ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค. ์ด ๋•Œ 2 pointer๋กœ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค. ์ด ๋ถ€๋ถ„์ด ๊ทธ๋ฆฌ๋”” ํ•˜๋‹ค. ์ฆ‰ ๋‹ต์ด ์ •ํ•ด์ ธ์žˆ๋‹ค๋Š” ๊ฒƒ. ๋ชจ๋“  ๊ฐ€์ง€์ˆ˜๋ฅผ ํŒ๋‹จํ•  ํ•„์š”๊ฐ€ ์—†์ด, ํŠน์ • ์ˆ˜์—ด์ด ์ •ํ•ด์ ธ ์žˆ๋‹ค.. ์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„์ง ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋  ๊ฒฝ์šฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ๋ณผ ํ•„์š”๊ฐ€ ์—†๋Š” ์›์†Œ์— ๋Œ€ํ•ด์„œ๋Š” ๊ฑฐ๋ฅผ ํ•„์š”๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ๋Ÿฐ ๋ถ€๋ถ„์„ ๋„ฃ์–ด์ฃผ๋ฉด ์‹œ๊ฐ„์•ˆ์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

Code

from collections import Counter
def solution(a):
    cand = dict(Counter(a).most_common())
    ans = 0
    for num in cand:
        if ans > cand[num]*2: continue
        temp = []
        i, j = 0, 1
        while i < len(a) and j < len(a):
            if a[i] == num:
                if a[i] == a[j]: # ๋‹ค์Œ ๊ฒƒ๋„ num์ผ ๊ฒฝ์šฐ
                    j += 1
                else:
                    temp.append(a[i])
                    temp.append(a[j])
                    i = j+1
                    j += 2
            else:
                if a[j] == num:
                    temp.append(a[i])
                    temp.append(a[j])
                    i = j+1
                    j += 2
                else:
                    j += 1
        ans = max(ans,len(temp))
    return ans

Reference