Claire's Study Note

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

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

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

 

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

 

(๋ฌธ์ œ 4๋ฒˆ) ํŒฐ๋ฆฐ๋“œ๋กฌ ํ™•์ธ

์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๋ฉด ํ•ด๋‹น ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž๋“ค์˜ ์ˆœ์„œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•ด์„œ ํŒฐ๋ฆฐ๋“œ๋กฌ(ํšŒ๋ฌธ)์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ "abbac"์™€ ๊ฐ™์€ ๋ฌธ์ž๋“ค์„ "abcba"๋กœ ์žฌ๋ฐฐ์น˜ํ•˜๋ฉด ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

 

์ž…์ถœ๋ ฅ ์˜ˆ

s answer
"abacbaa" True
"abaaceeffkckbaa" True
"abcabbcc" False
"sgsgsgabaaaecececekefefkccckbsgaaffsgsg" True
"aabcefagcefbcabbcc"
False

 

์ œํ•œ์‚ฌํ•ญ

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

 

ํ’€์ด

๋ถ„์„

Counter() ํ•จ์ˆ˜๋กœ ๋ฌธ์ž์˜ ๋นˆ๋„์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.

ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ๋นˆ๋„์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ๋ฌธ์ž๊ฐ€ ์—†๊ฑฐ๋‚˜ 1๊ฐœ๋งŒ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค. (ํšŒ๋ฌธ์˜ ์ค‘์‹ฌ๋ถ€์— ์˜ค๋Š” ๋ฌธ์ž๋งŒ ๋นˆ๋„์ˆ˜๊ฐ€ ํ™€์ˆ˜ ๋˜๋Š” ์ง์ˆ˜๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.)

๋นˆ๋„์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ๋ฌธ์ž๊ฐ€ 1๊ฐœ ์ดํ•˜๋ฉด True๋ฅผ, 1๊ฐœ ์ดˆ๊ณผ๋ฉด False๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

ํ’€์ด

from collections import Counter

def solution(s):
  count = Counter(s)
  oddCount = 0
  for val in count.values():
    if val % 2 != 0:
      oddCount += 1
  if oddCount > 1:
    return False

  return True
  
print(solution("abacbaa"))
print(solution("abaaceeffkckbaa"))
print(solution("abcabbcc"))
print(solution("sgsgsgabaaaecececekefefkccckbsgaaffsgsg"))
print(solution("aabcefagcefbcabbcc"))

True
True
False
True
False

 

์ •๋‹ต ํ’€์ด

๋ถ„์„

์•ž์—์„œ๋ถ€ํ„ฐ ์ฝ์œผ๋‚˜ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ฝ์œผ๋‚˜ ๋˜‘๊ฐ™์€ ๋ฌธ์ž์—ด์„ ํŒฐ๋ฆฐ๋“œ๋กฌ(ํšŒ๋ฌธ)์ด๋ผ๊ณ  ํ•œ๋‹ค.

ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ๋งŒ๋“œ๋ ค๋ฉด ์–‘์ชฝ์— ๊ฐ™์€ ๋ฌธ์ž๋ฅผ ๋Œ€์นญ์œผ๋กœ ๋ฐฐ์น˜ํ•ด์•ผ ํ•˜๋ฉฐ, ์ค‘์‹ฌ๋ถ€์— ์˜ค๋Š” ๋ฌธ์ž๋งŒ ํ™€์ˆ˜๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ๋ชจ๋“  ๋ฌธ์ž์˜ ๋นˆ๋„์ˆ˜๊ฐ€ ์ง์ˆ˜์ด๊ฑฐ๋‚˜ ์˜ค์ง ํ•˜๋‚˜์˜ ๋ฌธ์ž๋งŒ ๋นˆ๋„์ˆ˜๊ฐ€ ํ™€์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค.

 

ํ’€์ด

from collections import Counter

def solution(s):
  # ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž์˜ ๋นˆ๋„์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
  count = Counter(s)
  # ๋นˆ๋„์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
  odd = 0
  for key in count:
    if count[key] % 2 == 1:
      odd += 1
      
  # ๋นˆ๋„์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ๋ฌธ์ž๊ฐ€ 1๊ฐœ ์ดํ•˜์ผ ๋•Œ์—๋งŒ True๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  return odd <= 1
  
print(solution("abacbaa"))
print(solution("abaaceeffkckbaa"))
print(solution("abcabbcc"))
print(solution("sgsgsgabaaaecececekefefkccckbsgaaffsgsg"))
print(solution("aabcefagcefbcabbcc"))

True
True
False
True
False

๋ฐ˜์‘ํ˜•

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

Claire's Study Note

Hi.Claire

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