본문 바로가기
프로그래머스/Python

[프로그래머스] 문자열 내림차순으로 배치하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 1.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 소문자와 대문자를 각각 저장해 줄 공백 리스트를 만든다. li = list()  LI = list()
  2. 매개변수로 입력받은 문자열 s의 각 문자를 반복문을 사용하여 추출한다. for i in s
  3. 만약 추출한 문자를 아스키코드로 바꿨을 때 소문자 a의 아스키코드 값인 97과 소문자 z의 아스키코드 값인 122 사이에 있는 값이라면 if (97 <= ord(i) <= 122)
  4. 소문자를 저장하는 리스트에 추출한 문자를 추가한다. li.append(i)
  5. 반면에 추출한 문자가 대문자라면 else
  6. 대문자를 저장하는 리스트에 추출한 문자를 추가한다. LI.append(i)
  7. 소문자 리스트를 내림차순으로 정렬한다. li.sort()  li.reverse()
  8. 대문자 리스트도 내림차순으로 정렬한다. LI.sort()  LI.reverse()
  9. 대문자를 소문자보다 작은 것으로 간주한다. 따라서 소문자가 대문자보다 앞에 와야 하므로 소문자 리스트부터 원소를 하나씩 추출하여 결과 문자열에 더해준다. for i in li: answer += i
  10. 이후 대문자 리스트 원소도 하나씩 추출하여 결과 문자열에 더해준다. 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
반응형