개인 실습 07-26

정지호·2022년 7월 26일
0

개인 실습 진행

목록 보기
6/41
post-thumbnail

- 파이썬 실습(프로그래머스)

* 정수 내림차순으로 배치하기

문제:

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
n은 1이상 8000000000 이하인 자연수입니다.


나의 풀이

def solution(n):
    answer = ''
    string = str(n) # 자연수 문자열로 변환
    list = []
    for i in range(len(str(n))):
        list.append(string[i]) # 문자열의 문자 하나하나를 리스트에 append
    
    list.sort() # 뻘짓이다. 안해도 된다.
    list.sort(reverse=True) # 리스트 내림차순 정렬. 문자열이라 하더라도 정렬이 된다.
    for i in range(len(list)):
        answer += list[i] #문자를 내림차순 순서로 합치기
    return int(answer) #내림차순 순서로 합쳐진 문자를 정수화

다른 사람의 풀이

def solution(n):
    ls = list(str(n)) # 자연수 문자열로 변환 후, 리스트화.
    ls.sort(reverse = True) # 리스트를 내림차순 정렬. 문자열이라 하더라도 정렬이 된다. 
    return int("".join(ls)) # 공백 없이 리스트를 하나의 문자열로 합친 후, 정수화.

  1. list(문자열) -> 문자열을 하나하나 뜯어서 리스트의 각각의 요소로 집어넣어 준다. 즉, 요소의 개수가 문자열의 길이만큼이 되는 리스트를 얻는다.

  2. join() 함수를 기억하고는 있었는데, 쓰는 방법을 까먹었었다.
    "".join(ls) -> .join 앞에 오는게 합칠 때의 기준이다. 여기서는 공백없이 합치라는 뜻이다. 만약 " "이 온다면, 한 칸씩 띄어져서 합쳐진다. (1 1 5 8 9 이런식으로). 또한, join괄호 안에 합칠 리스트명을 넣어준다.

  3. ls.sort(reverse = True) : 단순히 거꾸로 정렬시키는 걸로 알고 있었는데, 알고보니 이거 자체가 내림차순 정렬이었다. 주의하자!

profile
정지호

0개의 댓글