[ํ๋ก๊ทธ๋๋จธ์ค | Python] ๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ
๐ ๋ฌธ์ ์ ๋ณด
- ๋์ด๋ : Level 1
- ๋ฌธ์ ๋งํฌ : https://programmers.co.kr/learn/courses/30/lessons/12915
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ
๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋ ๋ฆฌ์คํธ 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
- lambda์ ๋งค๊ฐ๋ณ์๋ ๋ฆฌ์คํธ๊ฐ ์๋, string๋ ์ฌ ์ ์๋ค.
- ๊ด๋ จ ํฌ์คํ ๋ฐ๋ก๊ฐ๊ธฐ ๐๐ป 2022.07.05 - [Studynote/Python] - [Python] ๋๋ค (lambda)
- 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])
์ฐธ๊ณ ์๋ฃ
- ์์ง๊ณค์ง๋ ๋ธ๋ก๊ทธ (https://ooyoung.tistory.com/59)
- KoB๋ ๋ธ๋ก๊ทธ (https://kingofbackend.tistory.com/98)
'Problem Solving > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค | Python] ๋ฌธ์์ด ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ (0) | 2022.07.05 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค | Python] ๋๋์ด ๋จ์ด์ง๋ ์ซ์ ๋ฐฐ์ด (0) | 2022.07.05 |
[ํ๋ก๊ทธ๋๋จธ์ค | Python] ์์ฐ (0) | 2022.07.04 |
[ํ๋ก๊ทธ๋๋จธ์ค | Python] ๋คํธ์ํฌ (0) | 2022.07.02 |
[ํ๋ก๊ทธ๋๋จธ์ค | Python] ์๋ ์ซ์ ๋ํ๊ธฐ (0) | 2022.07.01 |