[LeetCode] 1347. Minimum Number of Steps to Make Two Strings Anagram

Updated:

1347. Minimum Number of Steps to Make Two Strings Anagram

Anagram


t 에 μžˆλŠ” λ¬Έμžμ—΄ 쀑 일뢀λ₯Ό μˆ˜μ •ν•΄μ„œ s 의 anagram ν˜•νƒœλ‘œ λ§Œλ“€λ©΄ λœλ‹€.

anagram 은 μ–΄λ–€ λ¬Έμž₯의 문자 μˆœμ„œλ₯Ό λ°”κΏ”μ„œ λ‹€λ₯Έ λ¬Έμž₯으둜 λ˜μ–΄μžˆλŠ” ν˜•νƒœμ΄λ‹€.

예λ₯Όλ“€μ–΄ bcad λŠ” abcd 의 anagram 이닀.

s = leetcode β†’ {β€˜e’: 3, β€˜l’: 1, β€˜t’: 1, β€˜c’: 1, β€˜o’: 1, β€˜d’: 1}

t = practice β†’ {β€˜c’: 2, β€˜p’: 1, β€˜r’: 1, β€˜a’: 1, β€˜t’: 1, β€˜i’: 1, β€˜e’: 1}

μ΄λ ‡κ²Œ 문자 λ³„λ‘œ 갯수λ₯Ό κ΅¬ν•œ λ’€ s - t λ₯Ό ν•΄μ€€λ‹€λ©΄ t μ—λŠ” μ—†κ³  s μ—λ§Œ μžˆλŠ” 문자 개수λ₯Ό ꡬ할 수 μžˆλ‹€.

{β€˜l’: 1, β€˜e’: 2, β€˜o’: 1, β€˜d’: 1} t μ—μ„œ 문자 5개λ₯Ό μ΄λ ‡κ²Œ λ°”κΏ”μ£Όλ©΄ t λŠ” s 의 anagram 이 λœλ‹€.

Counter λ₯Ό 톡해 갯수λ₯Ό κ΅¬ν•˜κ³  λΊ„μ…ˆ 연산을 톡해 값을 κ΅¬ν•˜λ©΄ λœλ‹€.

λΊ„μ…ˆ 연산을 μ‚¬μš©ν•˜λ©΄ μŒμˆ˜λŠ” 사라지기 λ•Œλ¬Έμ— μ •ν™•νžˆ s μ—λ§Œ μžˆλŠ” 문자λ₯Ό ꡬ할 수 μžˆλ‹€.

substarct 을 μ‚¬μš©ν•˜λ©΄ 음수 값도 μ „λΆ€ λ°˜ν™˜ν•˜κ²Œ λœλ‹€.

[Python] collection


from collections import Counter


class Solution:
	def minSteps(self, s: str, t: str) -> int:
		check = dict(Counter(s) - Counter(t))

		output = 0
		for val in check.values():
			output += val

		return output


test = Solution()
s = 'leetcode'
t = 'practice'
print(test.minSteps(s, t))

Categories:

Updated:

Leave a comment