Q : 문자열을 뒤에서부터 정렬하는 알고리즘을 작성하세요.
Standard Template library -> library Template Standard
apple grape melon strawberry ->strawberray melon grape apple
우리가 많이 해보았던 알고리즘은 asdf같은 문자열을 fdsa로 정렬하는 알고리즘입니다.
하지만 이 문제는 문자열 자체를 순서를 바꾸지않고 뒤집는 것이므로 조금 더 응용 능력이 필요합니다.
처음으로 작성한 알고리즘은 stack에 string을 넣는 타입으로 작성하였습니다.
stack은 선입후출이므로 뒤에서 부터 string이 나오게 됩니다.
[ 첫번째 코드 ]
공백문자열이 나오면 Stack에 넣어주는 형식으로 작성하였습니다.
이 결과 2가지의 문제점이 발생하였습니다 (빨강줄)
1. len이 ++되면서 while문을 빠져나가 마지막 문자열을 저장하지 않으므로
결과값이 library template Standard로 나오게 된다.
2. 공백을 출력시에 아래에서 다음과 같이 출력해주면 공백이 많이 들어있는 string같은 경우에는 공백이 한번밖에 출력되지 않기 때문에
" library template Standard"
와 같은 경우에
" library template Standard "
와 같이 출력이 된다.
[ 두 번째 코드 ]
마지막에 널이 들어가있다면 현재까지 저장한 string을 스택에 넣어주고 while문을 빠져나오게 예외 처리를 해주고,
공백문자열도 함께 스택에 넣어주는 방식으로 만들어 주면 아래와 같이 정확하게 결과값이 나오게 됨니다.
'STUDY > 알고리즘' 카테고리의 다른 글
프로그래머스 - 자연수 inverse 배열 만들기 (0) | 2020.05.02 |
---|---|
백준알고리즘 6996번 (0) | 2018.05.03 |
백준알고리즘 1919번 애너그램만들기 (0) | 2018.05.02 |
[팰린드롬 알고리즘] 백준 10942번 (0) | 2018.01.05 |
[ 피보나치 수열 ] 귀납법과 반복법 (0) | 2018.01.02 |