가끔 생각을 해요 ʕتʔ

🍒 프로그래머스 - 문자열 내림차순으로 배치하기

문제

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.

s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

 

  • 제한사항
    str은 길이 1 이상인 문자열입니다.
  • 입출력 예
s return
"Zbcdefg" "gfedcbZ"

 

풀이

def solution(s):
    return ''.join(sorted(s, reverse = True))

# sorted() 문자열 정렬 가능
# s를 거꾸로 정렬한 뒤 배열로 리턴

 

🍒 프로그래머스 - 자연수 뒤집어 배열로 만들기

문제

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

 

  • 제한사항
    n은 10,000,000,000이하인 자연수입니다.
  • 입출력 예
n return
12345 [5,4,3,2,1]

 

풀이(실패)

def solution(n):
    list_str = sorted(''.join(str(n)), reverse=True)
    return [int(i) for i in list_str]

# 문자열로 변환한 n을 거꾸로 정렬한 뒤 배열로 가져옴
# 각 요소를 숫자로 변환해서 리턴

바꾼 풀이

def solution(n):
    reversed_str = str(n)[::-1]
    return [int(i) for i in reversed_str]
    
# [::-1] 문자열을 역순으로 가져오는 슬라이싱

 

🍒 TIL

 

  • '자연수 뒤집어 배열로 만들기' 문제에서 실패를 했다. 처음에 풀었을 땐 n을 문자열로 변환하고 sorted()를 사용해서 거꾸로 정렬한 배열로 만든 후, 각 배열에 있는 요소를 숫자로 변환했다. 그런데 예시에 나온 정답은 맞는데 제출 실패! 확인해보니 다른 테스트 코드를 통과하지 못했다. 원인을 찾아보니 '자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열로 리턴'하는 건데, 나는 거꾸로 정렬하는 것으로 착각해서 reverse=True 옵션을 추가한 sorted()를 사용했다. 즉 주어진 숫자를 그대로 뒤집어야 하는데 내림차순으로 정렬해버린 것이다..! 이것 또한 내가 문제를 잘못 이해한 게 문제였다😱 한두줄 짜리 문제라서 완전히 이해한 줄 알았는데 안심하면 안되겠다.
  • 아직도 파이썬 문법이 헷갈리지만 계속 풀다보니 처음에는 문법을 검색해가며 풀었는데, 이제는 틀려도 고쳐가며 풀 수 있을 정도가 되었다. 계속 익숙해질 수 있도록 더욱 꾸준히 해야겠다. 99클럽에서 문제를 하루에 한두 개씩 미션처럼 내주셔서 게을러지지 않고 더 부지런히 풀 수 있는 것 같다!

공유하기

facebook twitter kakaoTalk kakaostory naver band