https://programmers.co.kr/learn/courses/30/lessons/12917
프로그래머스에서 간단한 문제를 하나 풀었는데 생각보다 시간을 많이 써서 버벅거렸던 부분을 기록해두면 좋을 것 같아 쉬운 문제지만 포스팅하게 되었다.
첫번째 시도(실패) - 문법 파괴왕 코린이...
def solution(s):
answer = ''
string = sorted(s)
for s in string :
answer += s
answer = reversed(answer)
return answer
sorted 함수를 사용하여 대문자부터 소문자까지 알파벳 순으로 정렬을 하고자 했다.
이후 대문자는 소문자보다 뒤에 위치해야 하므로 reversed함수를 사용하여 문자열을 뒤집어서 출력하려고 했는데 저렇게 사용하는게 아니었나보다... string에서 reversed()를 사용할 수 없다는 오류가 계속해서 났고 찾아보니 reversed()는 변수 할당을 못하는 것 같았다.
출처: https://blockdmask.tistory.com/468 [개발자 지망생]
두번째 시도 (성공)
def solution(s):
answer = ''
string = sorted(s)
for s in string :
answer += s
return ''.join(reversed(answer))
때문에 reversed()를 변수로 할당하지 않고 바로 return으로 반환시키고자 했다.
이때 검색해보니 reversed()를 사용하고 나면 ['a', 'b', 'c'] 이런 식으로 answer에 문자열이 들어가 있어서 'abc'의 문자열로 합쳐서 반환해주는 함수인 'join'을 사용해야 했다.
특수 문자나 공백없이 모든 문자를 붙여서 출력해야 했기에 ''.join을 사용했고 그 결과 테스트 케이스 모두 통과되었다.
이렇게 reversed() 함수를 사용하는 방법 말고도 문자열 슬라이싱으로도 할 수 있는 방법이 있었다.
다른 사람의 풀이
def solution(s):
answer = ''
string = sorted(s)
string = string[::-1]
for s in string :
answer += s
return answer
처음부터 reversed()에 꽂혀서 생각을 못하고 있었는데 문자열은 [::-1]로 슬라이싱을 해주면 문자열이 뒤집어진다.
이 방법을 사용하면 join도 할 필요없이 깔끔하게 코드를 짤 수 있다.