๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Developer/๐ŸŸ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/python] - ํŠœํ”Œ

๋ฌธ์ œ ์„ค๋ช…

์…€์ˆ˜์žˆ๋Š” ์ˆ˜๋Ÿ‰์˜ ์ˆœ์„œ์žˆ๋Š” ์—ด๊ฑฐ ๋˜๋Š” ์–ด๋–ค ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฅด๋Š” ์š”์†Œ๋“ค์˜ ๋ชจ์Œ์„ ํŠœํ”Œ(tuple)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. n๊ฐœ์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ํŠœํ”Œ์„ n-ํŠœํ”Œ(n-tuple)์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • (a1, a2, a3, ..., an)

 

์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ n๊ฐœ์ด๊ณ , ์ค‘๋ณต๋˜๋Š” ์›์†Œ๊ฐ€ ์—†๋Š” ํŠœํ”Œ (a1, a2, a3, ..., an)์ด ์ฃผ์–ด์งˆ ๋•Œ(๋‹จ, a1, a2, ..., an์€ ์ž์—ฐ์ˆ˜), ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง‘ํ•ฉ ๊ธฐํ˜ธ '{', '}'๋ฅผ ์ด์šฉํ•ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • {{a1}, {a1, a2}, {a1, a2, a3}, {a1, a2, a3, a4}, ... {a1, a2, a3, a4, ..., an}}

์˜ˆ๋ฅผ ๋“ค์–ด ํŠœํ”Œ์ด (2, 1, 3, 4)์ธ ๊ฒฝ์šฐ ์ด๋Š”

 

  • {{2}, {2, 1}, {2, 1, 3}, {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)๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

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

 

[์ œํ•œ์‚ฌํ•ญ]

 

  • s์˜ ๊ธธ์ด๋Š” 5 ์ด์ƒ 1,000,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • s๋Š” ์ˆซ์ž์™€ '{', '}', ',' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ˆซ์ž๊ฐ€ 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • s๋Š” ํ•ญ์ƒ ์ค‘๋ณต๋˜๋Š” ์›์†Œ๊ฐ€ ์—†๋Š” ํŠœํ”Œ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • s๊ฐ€ ํ‘œํ˜„ํ•˜๋Š” ํŠœํ”Œ์˜ ์›์†Œ๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • return ํ•˜๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 1 ์ด์ƒ 500 ์ดํ•˜์ธ ๊ฒฝ์šฐ๋งŒ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

 

[์ž…์ถœ๋ ฅ ์˜ˆ]

 

s result
"{{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]
"{{20,111},{111}}" [111, 20]
"{{123}}" [123]
"{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

 


ํ’€์ด

 

def solution(s):
	s = s[1:-1]
	s = s.replace('},','}')
	li = []; k = 0; i = 0; r = ''
	for i in range(len(s)):
		if s[i] == '{':
			li.append([])
		elif s[i] == '}':
			li[k].append(int(r))
			r = ''
			k += 1
		else :
			if s[i] == ',':
				li[k].append(int(r))
				r = ''
				continue
			r += s[i]

	li.sort(key = lambda x : len(x), reverse = True)
	answer = []


	for i in range(len(li)-1):
		answer.insert(0,list(set(li[i]) - set(li[i+1]))[0])

	answer.insert(0,li[len(li)-1][0])

	return answer

 


 

ํ’€์ด ์ˆœ์„œ

 

1) ๋งค๊ฐœ ๋ณ€์ˆ˜ s๋ฅผ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

	for i in range(len(s)):
		if s[i] == '{':
			li.append([])
		elif s[i] == '}':
			li[k].append(int(r))
			r = ''
			k += 1
		else :
			if s[i] == ',':
				li[k].append(int(r))
				r = ''
				continue
			r += s[i]

 

2) ๋ฆฌ์ŠคํŠธ์•ˆ์— ์›์†Œ์ธ ๋ฆฌ์ŠคํŠธ๋“ค์„ ์›์†Œ ๊ฐœ์ˆ˜ ๋ณ„๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

 

       li.sort(key = lambda x : len(x), reverse = True)

 

 

3) set() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐจ์ง‘ํ•ฉ์„ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

 

	for i in range(len(li)-1):
		answer.insert(0,list(set(li[i]) - set(li[i+1]))[0])

	answer.insert(0,li[len(li)-1][0])

 

 


์‚ฌ์šฉ๋œ ๊ฐœ๋…

 

* ์ง‘ํ•ฉ ์ž๋ฃŒํ˜• set()

* ์‚ฌ์šฉ์ž ์ •์˜๋กœ ๋ฆฌ์ŠคํŠธ ์ •๋ ฌํ•˜๊ธฐ