๐Ÿ“’  ๋ฌธ์ œ ์ •๋ณด

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฌธ์ž์—ด ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ

๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑ๋œ ๋ฆฌ์ŠคํŠธ strings์™€, ์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ ๋ฌธ์ž์—ด์˜ ์ธ๋ฑ์Šค n๋ฒˆ์งธ ๊ธ€์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด strings๊ฐ€ ["sun", "bed", "car"]์ด๊ณ  n์ด 1์ด๋ฉด ๊ฐ ๋‹จ์–ด์˜ ์ธ๋ฑ

programmers.co.kr

 

 

๐Ÿ”’  ๋ฌธ์ œ ์„ค๋ช…

๋”๋ณด๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑ๋œ ๋ฆฌ์ŠคํŠธ strings์™€, ์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ ๋ฌธ์ž์—ด์˜ ์ธ๋ฑ์Šค n๋ฒˆ์งธ ๊ธ€์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด strings๊ฐ€ ["sun", "bed", "car"]์ด๊ณ  n์ด 1์ด๋ฉด ๊ฐ ๋‹จ์–ด์˜ ์ธ๋ฑ์Šค 1์˜ ๋ฌธ์ž "u", "e", "a"๋กœ strings๋ฅผ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.


์ œํ•œ ์‚ฌํ•ญ

  • strings๋Š” ๊ธธ์ด 1 ์ด์ƒ, 50์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • strings์˜ ์›์†Œ๋Š” ์†Œ๋ฌธ์ž ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • strings์˜ ์›์†Œ๋Š” ๊ธธ์ด 1 ์ด์ƒ, 100์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“  strings์˜ ์›์†Œ์˜ ๊ธธ์ด๋Š” n๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค 1์˜ ๋ฌธ์ž๊ฐ€ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ์—ฌ๋Ÿฟ ์ผ ๊ฒฝ์šฐ, ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์„  ๋ฌธ์ž์—ด์ด ์•ž์ชฝ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

strings n return
["sun", "bed", "car"] 1 ["car", "bed", "sun"]
["abce", "abcd", "cdx"] 2 ["abcd", "abce", "cdx"]

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ 1
"sun", "bed", "car"์˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์€ ๊ฐ๊ฐ "u", "e", "a" ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ strings๋ฅผ ์ •๋ ฌํ•˜๋ฉด ["car", "bed", "sun"] ์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ 2
"abce"์™€ "abcd", "cdx"์˜ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์€ "c", "c", "x"์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •๋ ฌ ํ›„์—๋Š” "cdx"๊ฐ€ ๊ฐ€์žฅ ๋’ค์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. "abce"์™€ "abcd"๋Š” ์‚ฌ์ „์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด "abcd"๊ฐ€ ์šฐ์„ ํ•˜๋ฏ€๋กœ, ๋‹ต์€ ["abcd", "abce", "cdx"] ์ž…๋‹ˆ๋‹ค.

 

 

๐Ÿ”‘  ๋ฌธ์ œ ํ’€์ด

๋ฐฉ๋ฒ• 1. zip() ํ™œ์šฉ

์‚ฌ์‹ค ํ•ด๊ฒฐ์— ์• ๋ฅผ ๋จน๊ณ  ๊ฒฐ๊ตญ zip() ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•œ ํ›„ ์ ์šฉํ•˜์—ฌ ์™„์„ฑํ•œ ํ’€์ด์ด๋‹ค. zip() ํ•จ์ˆ˜์™€  lambda ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ •๋ ฌํ•˜์—ฌ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

def solution(strings, n):
    answer = []
    dict = {}

    for str in strings:
        dict[str] = str[n]
    print(dict)

    zip_list= list(zip(dict.keys(), dict.values()))
    tmp = sorted(zip_list, key=lambda x: (x[1], x[0]))
    for i in range(len(tmp)):
        answer.append(tmp[i][0])
        
    return answer

 

๋ฐฉ๋ฒ• 2. ์œ„์˜ ํ’€์ด ์‘์šฉ

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด์•˜๋‹ค. ๋‚ด๊ฐ€ ์ ์šฉํ•œ  lambda ๋ฅผ ๋ณด๋‹ค ํšจ์šธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด, ํ•œ ์ค„๋กœ๋„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

def solution(strings, n):
    return sorted(strings, key=lambda x: (x[n], x))

 

 

 

๐Ÿ’ก  What I learned

  • zip()์„ ๋” ์ž์œ ์ž์žฌ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ๊ฒ ๋‹ค.
  • .sort()์™€ sorted()
    • ๋‘ ํ•จ์ˆ˜์˜ ์ฐจ์ด 
      • .sort() : ์›๋ณธ์„ ๋ณ€ํ˜•์‹œ์ผœ ์ •๋ ฌํ•œ๋‹ค. ์˜ค๋ฆ„์ฐจ์ˆœ์ด ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค.
      • sorted() : ์›๋ณธ์„ ๋ณ€ํ˜•์‹œํ‚ค์ง€ ์•Š๊ณ  ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฆ„์ฐจ์ˆœ์ด ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค.
    • ํŒŒ๋ผ๋ฏธํ„ฐ
      • reverse : bool๊ฐ’์„ ๋„ฃ๋Š”๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ reverse=False (์˜ค๋ฆ„์ฐจ์ˆœ) ๊ฐ’์ด๋‹ค. reverse=True : ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
      • key : ์ •๋ ฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชฉ์ ์˜ ๋ณ€์ˆ˜/ํ•จ์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ๋„ฃ๋Š”๋‹ค. key๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜๋ฉฐ, ๊ธฐ๋ณธ๊ฐ’์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ํŠœํ”Œ์„ ๊ฐ’์œผ๋กœ ๋„ฃ์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๋”๋ณด๊ธฐ

์˜ˆ์‹œ 1 : reverse

num_list = [15, 22, 8, 79, 10]

num_list.sort(reverse=True)
print(num_list)				# => [79, 22, 15, 10, 8]

์˜ˆ์‹œ 2 : key

str_list = ['์ข‹์€ํ•˜๋ฃจ','good_morning','๊ตฟ๋ชจ๋‹','niceday']

# ํ•จ์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ๋„ฃ๊ธฐ
print(sorted(str_list, key=len))  	# => ['๊ตฟ๋ชจ๋‹', '์ข‹์€ํ•˜๋ฃจ', 'niceday', 'good_morning']

# ๋žŒ๋‹ค ์ด์šฉํ•˜๊ธฐ
print(sorted(str_list, key=lambda x : x[1])) 	 # => ['niceday', 'good_morning', '๊ตฟ๋ชจ๋‹', '์ข‹์€ํ•˜๋ฃจ']
a = [(1, 3), (0, 3), (1, 4), (1, 5), (0, 1) (2, 4)]

# ํŠœํ”Œ์„ ๊ฐ’์œผ๋กœ ๋„ฃ๊ธฐ. -๋ฅผ ๋ถ™์ด๋ฉด ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค
print(sorted(a, key=lambda x: (x[0], -x[1])

 

 


์ฐธ๊ณ ์ž๋ฃŒ

BELATED ARTICLES

more