๐Ÿ’ป๊ฐœ๋ฐœ๊ณต๋ถ€/Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํŠœํ”Œ Python (์นด์นด์˜ค ๊ธฐ์ถœ)

Jee-young 2021. 9. 7. 11:19

https://programmers.co.kr/learn/courses/30/lessons/64065

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํŠœํ”Œ

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

 

ํ’€์ด๊ณผ์ • 

์ค‘๋ณต๋˜๋Š” ์›์†Œ๊ฐ€ ์—†๋Š” ํŠœํ”Œ์„ ์ง‘ํ•ฉ๊ธฐํ˜ธ๋กœ ํ‘œํ˜„๋œ ์ž…๋ ฅ์ด ์ฃผ์–ด์ง„๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ํŠœํ”Œ์ด (2, 1, 3, 4)์ธ ๊ฒฝ์šฐ

{{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}

{{2, 1, 3, 4}, {2}, {2, 1, 3}, {2, 1}}

{{1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2}} ๋Š” ๋ชจ๋‘ ๊ฐ™์€ ํŠœํ”Œ (2, 1, 3, 4)๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 

์ฒ˜์Œ์—” ํŠœํ”Œ์—์„œ ์›์†Œ๊ฐ€ ์ˆœ์„œ์— ์˜ํ–ฅ ๋ฐ›๋Š”๋‹ค๋ฉด์„œ ์ง‘ํ•ฉ๊ธฐํ˜ธ๋กœ ์“ฐ๋ฉด ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๋œ๋‹ค๋‹ˆ ๋ฌด์Šจ๋ง์ธ์ง€ ํ—ท๊ฐˆ๋ ธ๋‹ค. 

์„ธ๋ฒˆ์งธ ์ผ€์ด์Šค๋ฅผ ๋ณด๋ฉด, [111, 20]์€ {111}, {111, 20} ๋˜๋Š” {111}, {20, 111} ์ด๋ ‡๊ฒŒ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๋ชจ๋‘ ๊ฐ™์€ ํŠœํ”Œ (111, 20)์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ํŠœํ”Œ ์•ˆ์—์„œ๋งŒ ์›์†Œ์˜ ์ˆœ์„œ๋ฅผ ์ง€ํ‚ค๋ฉด ๋˜๋Š”๊ฒƒ์ธ๋ฐ, ์ด๋•Œ ๋ฌธ์ž์—ด s์—์„œ ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋‚˜์˜จ ์ˆซ์ž๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋ฆฌ์ŠคํŠธ์— ๋‹ด๊ธด๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

1. ์ •๊ทœํ‘œํ˜„์‹ 

๋ฌธ์ž์—ด s์—์„œ ์ˆซ์ž๋งŒ ๋ฝ‘์•„ ๋ฆฌ์ŠคํŠธํ™” ์‹œํ‚ค๋ ค๊ณ  ํ•œ๋‹ค. ์ฃผ์˜ํ• ์ ์€ (\d)๋งŒ ์‚ฌ์šฉํ•ด์„œ ๋งค์น˜์‹œํ‚จ๋‹ค๋ฉด ์ผ€์ด์Šค 3๋ฒˆ์˜ ๊ฒฝ์šฐ ['111'] ์ด ์•„๋‹ˆ๋ผ ['1', '1', '1'] ์œผ๋กœ ์ €์žฅ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ˆซ์ž๊ฐ€ 1ํšŒ์ด์ƒ ๋ฐ˜๋ณต๋˜๋ฉด ๋งค์น˜์‹œํ‚ค๋„๋ก (\d+)๋ฅผ ์‚ฌ์šฉํ•ด์ค€๋‹ค. 

s = "{{20,111},{111}}"
s = re.findall('\d+', s)
print(s)  # ['20', '111', '111']

 

2. ์ค‘๋ณต์›์†Œ ์นด์šดํŒ…

๋ฌธ์ž์—ด "{{2},{2,1},{2,1,3},{2,1,3,4}}"์˜ ๋ฐ˜ํ™˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด [2, 1, 3, 4] ์ฆ‰, ๊ฐ€์žฅ ๋งŽ์ด ๋“ฑ์žฅํ•œ ํšŸ์ˆ˜๋Œ€๋กœ ์ €์žฅ๋˜์–ด์žˆ๋‹ค. Counter๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์นด์šดํŒ… ํ•ด์ฃผ์—ˆ๋‹ค. 

count = Counter(s)
print(count)  # Counter({'2': 4, '1': 3, '3': 2, '4': 1})

 

3. ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ๋ฐ ๋ฐ˜ํ™˜ 

๋จผ์ €, ๋ฆฌ์ŠคํŠธ ํƒ์ƒ‰์„ ์œ„ํ•ด ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋ฅผ ํŠœํ”Œ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ , 1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  ์ธ๋ฑ์Šค 0๋ฒˆ์งธ ๊ฐ’์„ int๋กœ ๋ณ€ํ™˜ํ•ด ๋‹ต์„ ๊ตฌํ–ˆ๋‹ค. 

 

์ „์ฒด ์ฝ”๋“œ 

import re
from collections import Counter

def solution(s):
    answer = []
    s = re.findall('\d+', s)
    count = Counter(s)
    d = list(zip(count.keys(), count.values()))
    d = sorted(d, key = lambda x:-x[1])
    for e in d:
        answer.append(e[0])
    answer = map(int, answer)
    answer = list(map(int, answer))
    
    return answer