본문 바로가기
알고리즘/프로그래머스

[python] 문자열 내림차순으로 배치하기(연습문제)

by 민-Zero 2020. 3. 24.

문제의 목표는 입력받은 문자열 s에 나타나는 문자를 큰 것부터 작은 순으로 즉, 내림차순으로 정렬한 문자열을 반환하는 것이다. 여기서 문자를 큰 것부터 작은 순은 알파벳 사전 순으로 맨뒤가 크고 맨 앞이 작다. 주의할 점은 대문자는 소문자 보다 작은 것으로 간주한다.

만약 "AbZa"라는 문자열이 주어진다면 "baZA"를 반환하면 된다.

 

설계 및 구현

구현을 위해 주어진 함수는 문자를 내림차순으로 배열할 매개변수 s를 가지는 함수이다.

해당 문자열의 문자들을 내림차순으로 정렬해야 하므로 문자열이 가진 문자들을 하나씩 잘라 리스트에 저장한뒤 정렬하고 다시 문자열로 변경하면 된다. 이때 대문자는 아스키코드값이 소문자보다 작기 때문에 대문자가 더 작다는 조건은 자동적으로 성립한다.

① 문자열 s의 문자들을 리스트로 저장

② 내림차순으로 정렬후 다시 문자열로 변경하여 반환

 

을 위해 문자열 s를 list() 함수로 형변환을 수행한다.

②의 수행을 위해 우선 문자열을 리스트로 변경한 값을 sorted(list(s), reverse=True)를 통해 내림차순으로 정렬하고 정렬한 리스트를 반환한다. 반환한 함수를 "구분자".join() 함수를 통해 문자열로 합친다. join 함수는 구분자에 입력한 문자를 사용하여 리스트의 내용을 합쳐셔 문자열로 반환해 준다. 만약 구분자에 만약 ", "를 넣는다면 "d,c,b,a"와 같은 형태로 합쳐진다.

정상적으로 문제의 목표를 수행하는것을 확인할 수 있다.

 

따라서 무리없이 채점을 통과하였다.

댓글