[python_파이썬_pass]프로그래머스_LV1_문자열 내 마음대로 정렬하기_풀이
2024. 5. 10. 11:59ㆍ코드리뷰
728x90
반응형
공부하는허딩크 : https://www.youtube.com/live/kdCOczz1e9c?feature=shared
sort만 잘 알면 해결하기 어렵지 않다.
<첫번째 시도 : 통과>
lambda는 처음 사용해봤다. 단순히 lambda 인자 : 표현식으로 표현
sort()의 괄호 안헤 key = 함수 ==> 여기에 함수가 나와야 함 그래서 lambda가 유용함
ex> def sum(x, y):
return x + y
lambda x, y : x + y
def solution(strings, n):
strings.sort()
strings.sort(key=lambda x:x[n])
return strings
<두번째 시도 : 통과>
함수를 만들어서 key=에 넣는게 조금 헷갈린다. 계속 풀다보니 key이걸 알면 오름차순, 내림차순할때 유용하다.
def solution(strings, n):
def temp(s):
return s[n]
strings.sort()
strings.sort(key=temp) #key=함수
return strings
<다른사람 풀이를 참고해서 key를 모를 경우>
문제를 직관적으로 본다. => 최근에 느끼는 거지만 직관적으로 보면 안된다. 숲을 봐야 문제가 쉽게 풀린다.
문제의 조건대로 n번째 인덱스를 찾아서 오름차순으로 정렬 후 조건을 가지고 있는다.
그 다음 while문과 이중for문으로 조건을 하나씩 만족하는걸 찾는데
중요한건 만약 같은 문자가 나올 경우 애매한 상황이다.
두번째 예시에서 c가 두번 나오면
sorted_strings[j][n] not in answer조건이 빠지면 무한루프에 빠지게 된다.
# strings = ["abce", "abcd", "cdx"]
# n = 2
def solution(strings, n):
temp = []
for i in strings:
temp.append(i[n])
sorted_temp = sorted(temp)
print(sorted_temp)
answer = []
sorted_strings = sorted(strings)
while len(answer) != len(strings):
for i in range(len(strings)):
for j in range(len(strings)):
if sorted_temp[i] == sorted_strings[j][n] and sorted_strings[j] not in answer:
answer.append(sorted_strings[j])
continue
return answer
728x90
반응형
'코드리뷰' 카테고리의 다른 글
[python_파이썬_pass]프로그래머스_LV1_두 개 뽑아서 더하기_풀이 (0) | 2024.05.10 |
---|---|
[python_파이썬_pass]프로그래머스_LV1_K번째수_풀이 (0) | 2024.05.10 |
[python_파이썬_pass]프로그래머스_LV1_최소직사각형_풀이 (0) | 2024.05.10 |
[python_파이썬_pass]프로그래머스_LV1_시저 암호_풀이 (0) | 2024.05.09 |
[python_파이썬_pass_복습]프로그래머스_LV1_삼총사_풀이 (0) | 2024.05.08 |