프로그래머스/Python
[프로그래머스] 문자열 내림차순으로 배치하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 7. 1. 13:20
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 설명
2. 풀이과정
- 소문자와 대문자를 각각 저장해 줄 공백 리스트를 만든다. li = list() LI = list()
- 매개변수로 입력받은 문자열 s의 각 문자를 반복문을 사용하여 추출한다. for i in s
- 만약 추출한 문자를 아스키코드로 바꿨을 때 소문자 a의 아스키코드 값인 97과 소문자 z의 아스키코드 값인 122 사이에 있는 값이라면 if (97 <= ord(i) <= 122)
- 소문자를 저장하는 리스트에 추출한 문자를 추가한다. li.append(i)
- 반면에 추출한 문자가 대문자라면 else
- 대문자를 저장하는 리스트에 추출한 문자를 추가한다. LI.append(i)
- 소문자 리스트를 내림차순으로 정렬한다. li.sort() li.reverse()
- 대문자 리스트도 내림차순으로 정렬한다. LI.sort() LI.reverse()
- 대문자를 소문자보다 작은 것으로 간주한다. 따라서 소문자가 대문자보다 앞에 와야 하므로 소문자 리스트부터 원소를 하나씩 추출하여 결과 문자열에 더해준다. for i in li: answer += i
- 이후 대문자 리스트 원소도 하나씩 추출하여 결과 문자열에 더해준다. for i in LI: answer += i
반응형
3. 소스코드
def solution(s):
answer = ''
li = list()
LI = list()
for i in s:
if (97 <= ord(i) <= 122):
li.append(i)
else:
LI.append(i)
li.sort()
li.reverse()
LI.sort()
LI.reverse()
for i in li:
answer += i
for i in LI:
answer += i
return answer
728x90
반응형