[LeetCode] 1282. Group the People Given the Group Size They Belong To

Updated:

Group the People Given the Group Size They Belong To

μ˜μ–΄ ν•΄μ„ν•˜λŠ”κ²Œ 더 νž˜λ“€μ—ˆλ‹€.. μ˜μ–΄ 곡뢀 μ’€ μ—΄μ‹¬νžˆ ν•΄μ•Όκ² λ‹€.. κ·Έλž˜λ„ 해석이 잘 μ•ˆλ˜λ©΄ 밑에 μ˜ˆμ‹œλ₯Ό 보고 μ΄ν•΄ν•˜λ©΄ λœλ‹€..

groupSizes 에 μžˆλŠ” 숫자 크기만큼 그룹을 λ§Œλ“€ 수 있고 κ·Έ 그룹은 숫자의 index 둜 이루어진닀.

[3, 3, 3, 3, 3, 1, 3] 은 크기가 3 인 κ·Έλ£Ή 두 개, 크기가 1 인 κ·Έλ£Ή ν•œ 개λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

문제의 λ§ˆμ§€λ§‰μ„ 보면 μ •λ‹΅μ˜ 경우 쀑 λ§žλŠ” 것 ν•œ 개만 λ°˜ν™˜ν•˜λΌκ³  ν•œλ‹€.


class Solution:
	def groupThePeople(self, groupSizes: List[int]) -> List[List[int]]:
		output = []
		for i in groupSizes:
			if i == -1:
				continue
			tmp = []
			for j in range(i):
				tmp.append(groupSizes.index(i))
				groupSizes[groupSizes.index(i)] = -1
			output.append(tmp)

		return output

μ²˜μŒμ— λ”± μƒκ°λ‚˜λŠ” λŒ€λ‘œ ν’€μ–΄λ³΄λ‹ˆ 정닡은 λ§žμ•˜μ§€λ§Œ μ†λ„μ—μ„œ ν•˜μœ„ 5%κ°€ λ‚˜μ™€λ²„λ Έλ‹€.. 2쀑 포문이 μžˆμœΌλ‹ˆ 그럴만 ν•˜λ‹€ !!!

ν•˜μ§€λ§Œ λ„μ €νžˆ λ‹€λ₯Έ 방법이 생각이 μ•ˆλ‚˜ 검색을 ν•΄λ³΄λ‹ˆ hash λ₯Ό μ‚¬μš©ν•˜λ©΄ 두 λ°° κ°€λŸ‰ 빨리 ν’€ 수 μžˆμ—ˆλ‹€.


class Solution:
	def groupThePeople(self, groupSizes: List[int]) -> List[List[int]]:
		output = []

		idx_dict = collections.defaultdict(list)

		for idx, i in enumerate(groupSizes):
			idx_dict[i].append(idx)

		for key in idx_dict:
			for i in range(0, len(idx_dict[key]), key):
				output.append(idx_dict[key][i:i + key])

		return output

λ§Œμ•½ key κ°€ 2인데 value 의 길이가 2κ°€ λ„˜λŠ”λ‹€λ©΄ value λ₯Ό 2μ”© λ‚˜λˆ„μ–΄ μ€˜μ•Ό ν•œλ‹€.

이걸 μ–΄λ–»κ²Œ κ΅¬ν˜„ ν•  까 κ³ λ―Όμ΄μ—ˆλŠ”λ° range λŠ” 숫자λ₯Ό μ–Όλ§ˆμ”© μ¦κ°€μ‹œν‚¬μ§€ 정해쀄 수 도 μžˆλ‹€..


Categories:

Updated:

Leave a comment