programmers- lv.1 (문자열 내 마음대로 정렬하기)

이예송·2023년 7월 15일

PS

목록 보기
36/97

문제링크: 문자열 내 마음대로 정렬하기

✍🏻 Information

content
언어python
난이도⭐️
풀이시간15분
제출횟수1
인터넷검색유무no




🍒 My Code

def solution(strings, n):
    answer = []
    for i in range(0,len(strings)-1):
        for j in range(i+1,len(strings)):
            if strings[i][n]>strings[j][n]:
                strings[i],strings[j] = strings[j],strings[i] 
            elif strings[i][n]==strings[j][n]:
                if strings[i]>strings[j]:
                    strings[i],strings[j] = strings[j],strings[i] 
    
    return strings




💡 What I learned

  • 2중 for문 안쓰고 문제 풀려고 생각하다 시간만 보내고 결국 이중 for문으로 풀어버렸다..
  • 아래 1번 풀이는 문제 바뀌기 전 풀이라 n번째 문자가 같을때는 처리하지 않는 것 같다.
def strange_sort(strings, n):
    '''strings의 문자열들을 n번째 글자를 기준으로 정렬해서 return하세요'''
    return sorted(strings, key=lambda x: x[n])
def solution(strings, n):
    return sorted(sorted(strings), key=itemgetter(n))

-> 첫째 sorted로 사전순으로 정렬, 둘째 sorted로 글자 번호 순으로 정렬

  • lambda in sorted: 너무나 많은 곳에 쓸 수 있는것 같지만 sorted에 적용되는 예시
    1) 비교할 아이템이 요소가 복수 개일 경우, 튜플로 우선순위를 정해줄 수 있다
    2) -를 붙이면, 현재와 반대차순(오름차순<->내림차순)으로 정렬된다
e = sorted(a, key = lambda x : (x[0], -x[1])) 
=> [(0, 1), (1, 2), (3, 0), (5, 2), (5, 1)]

f = sorted(a, key = lambda x : -x[0]) 
=> [(5, 1), (5, 2), (3, 0), (1, 2), (0, 1)])

0개의 댓글