Claire's Study Note

[Python ์ฝ”ํ…Œ ์ž…๋ฌธ] 3. (๋ฌธ์ œ 5๋ฒˆ) ํŒฐ๋ฆฐ๋“œ๋กฌ ๊ธธ์ด

by Hi.Claire
๋ฐ˜์‘ํ˜•

๐Ÿ–ฅ๏ธ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ•ต์‹ฌ - Python (๊น€ํƒœ์›, ์ธํ”„๋Ÿฐ)

 

์„น์…˜3. ํ•ด์‹œ(Hash)

 

(๋ฌธ์ œ 5๋ฒˆ) ํŒฐ๋ฆฐ๋“œ๋กฌ ๊ธธ์ด

๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๋ฉด ํ•ด๋‹น ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž๋“ค์„ ๊ฐ€์ง€๊ณ  ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€๊ธธ์ด ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ๋งŒ๋“ค๊ณ  ๊ทธ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜์„ธ์š”.

๋ฌธ์ž์—ด์€ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ "abcbbbccaaeee"๊ฐ€ ์ฃผ์–ด์ง„๋‹ค๋ฉด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ์€ "ecbbaaabbce"์ด๊ณ  ๋‹ต์€ 11์ž…๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

s answer
"abcbbbccaaeee" 11
"aabbccddee"
10
"fgfgabtetaaaetytceefcecekefefkccckbsgaafffg"
41
"aabcefagcefbcabbcc"
17
"abcbbbccaa"
9

 

์ œํ•œ์‚ฌํ•ญ

  • s์˜ ๊ธธ์ด๋Š” 1,000์„ ๋„˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

ํ’€์ด

๋ถ„์„

๋นˆ๋„์ˆ˜๊ฐ€ ์ง์ˆ˜์ธ ๋ฌธ์ž๋Š” ๋ชจ๋‘ ํฌํ•จํ•œ๋‹ค.

๋นˆ๋„์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ๋ฌธ์ž๋Š” 1์„ ๋บ€ ๊ฐœ์ˆ˜๋งŒ ํฌํ•จํ•œ๋‹ค. ๋นˆ๋„์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ๋ฌธ์ž๊ฐ€ 1๊ฐœ ์ด์ƒ์ผ ๋•Œ ์ตœ์ข… ๋‹ต์— 1์„ ๋”ํ•ด์ค€๋‹ค. (ํŒฐ๋ฆฐ๋“œ๋กฌ์˜ ์ค‘์‹ฌ์—๋Š” ํ™€์ˆ˜๊ฐœ์ธ ๋ฌธ์ž๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ)

 

ํ’€์ด

from collections import Counter

def solution(s):
  answer = 0
  oddDict = dict()
  count = Counter(s)
  for key in count:
    if count[key] % 2 == 0:
      answer += count[key]
    else:
      oddDict[key] = count[key]
  for key in oddDict:
    answer += oddDict[key] - 1
  if len(oddDict) >= 1:
    answer += 1
  return answer
  
print(solution("abcbbbccaaeee"))
print(solution("aabbccddee"))
print(solution("fgfgabtetaaaetytceefcecekefefkccckbsgaafffg"))
print(solution("aabcefagcefbcabbcc"))
print(solution("abcbbbccaa"))

11
10
41
17
9

 

์ •๋‹ต ํ’€์ด

๋ถ„์„

๋ฌธ์ž์—ด์— ๋นˆ๋„์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ๋ฌธ์ž๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ „์ฒด ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋นˆ๋„์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ๋ฌธ์ž๊ฐ€ ์กด์žฌํ•˜๋ฉด ๊ทธ ์ค‘์—์„œ 1๊ฐœ๋งŒ ์ „์ฒด ๊ฐœ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ (ํŒฐ๋ฆฐ๋“œ๋กฌ์˜ ์ค‘์‹ฌ์— ์œ„์น˜), ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋“ค์€ 1๊ฐœ๋ฅผ ๋บ€ ์ง์ˆ˜๊ฐœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ’€์ด

from collections import Counter

def solution(s):
  count = Counter(s)
  odd = 0
  for key in count:
    if count[key] % 2 == 1:
      odd += 1
  return len(s) - odd + 1 if odd > 0 else len(s)
  
print(solution("abcbbbccaaeee"))
print(solution("aabbccddee"))
print(solution("fgfgabtetaaaetytceefcecekefefkccckbsgaafffg"))
print(solution("aabcefagcefbcabbcc"))
print(solution("abcbbbccaa"))

11
10
41
17
9

๋ฐ˜์‘ํ˜•

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Claire's Study Note

Hi.Claire

ํ™œ๋™ํ•˜๊ธฐ