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

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

by 민-Zero 2020. 3. 24.

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

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

 

설계 및 구현

구현을 위해 주어진 함수는 반환 타입으로 string을 가지며 매개변수 string s를 가지는 함수이다. 함수의 구현은 파이썬에서 한 것처럼 진행하면

① 문자열 s의 문자들을 벡터에 저장

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

 

을 수행하기 위해 char타입을 저장하는 벡터를 생성하여 문자열의 문자들을 하나씩 저장한다.

②를 수행하기 위해 내림차순을 위해 desc라는 함수를 하나 생성한다. algorithm헤더에 있는 sort함수를 사용하여 내림차순 정렬을 수행하고 answer 문자열에 저장하여 변경한 문자열을 반환한다.

 

무리 없이 채점을 통과하는 것을 확인할 수 있다.

 

※새로 배운 것

다른 사람의 풀이를 통해 일일이 벡터에 저장하지 않고 string 또한 begin과 end를 사용하여 sort() 함수에 적용할 수 있는 것을 알 수 있었다.

또한 자주 잊어버리는 것 중에 하나인 functional 헤더에 포함되어 있는 greater 함수 객체를 사용하여 내림차순을 설정할 수 있는 것을 다시 한번 상기하자.

댓글