티스토리 뷰

728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/12917

 

코딩테스트 연습 - 문자열 내림차순으로 배치하기

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로

programmers.co.kr

 

 

나의 풀이

def solution(s):
    return ''.join(item for item in ''.join(sorted(s)[::-1]))

 

한 줄 코딩하긴 했는데 시간 오래걸림 ㅋㅋ

 

개선해서,

def solution(s):
    return ''.join(item for item in (sorted(s)[::-1])

 

다른 사람 풀이

def solution(s):
    return ''.join(sorted(s, reverse=True))

 

이번 문제 풀면서 알게된 점

1) 문자열을 sorted()를 이용해서 정렬 가능함

2) reversed()와 sorted()는 다른 기능.

reversed()는 그냥 뒤에서 앞으로 역순으로 가져오고, sorted()는 말그대로 정렬.

3) sorted()에 reverse 넣어줄 수 있음.

4) join() 쓸 때, 다음과 같이 쓰면 안됨

line =""
s = "Zbcdefg"
for i in s:
	line.join(i)

.join() 은 리스트의 요소 하나하나를 . 앞의 요소에 하나씩 더해서 반환하기 때문에 안되는듯 ..

( 궁예임 )

 

5) 이유를 모르겠다 

lst = [1,2,3,4,0]
#안됨
print (i for i in reversed(lst))
#됨, 리스트로 나옴 
print([i for i in reversed(lst)])
#됨, 원소 하나씩 나옴 
for i in lst:
	print(i)

첫번째 경우, 타입이 generator라고 한다 ... ㅠㅠㅠㅠㅠ 모르는 것 투성이 ㅠ 

 

파이썬 하다보면 이건 왜 안될까 하는거 많은데 이유를 알기가 어렵고 .. 또 귀찮고 ..

매번 까먹는다 ㅠㅅ ㅠ 

 

그리고 2중 포문은 어캐 한줄로 코딩하는건지 봐도 헷갈린다 .. ㅋ 

 

파이썬 마스터 되고싶음 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함