[Programmers] - 정수 내림차순으로 배치하기

오동훈·2021년 3월 14일
0

Programmers

목록 보기
8/64
post-thumbnail

1. Problem 📃

https://programmers.co.kr/learn/courses/30/lessons/12933

다음 문제는 정수 n이 입력 되었을 때, n을 내림차순으로 정렬해 반환하는 문제입니다.

2. Logic 👨‍🏫

  1. 정수 n을 sort와 reverse 함수를 사용할 수 있는 list의 형태로 변환해준다
  2. 정렬된 정수 n을 리스트 형태에서 정수 형태로 합쳐준다.

3. Code 💻

def solution(n):
    n_list = list(str(n))
    n_list.sort(reverse=True)
    answer = int("".join(n_list))
    return answer

4. Feedback 📚

4.1 문자열 합치기, 나누기

4.1.1 Join function

- join 함수는 리스트의 문자열들을 합치는 역할을 한다.

PROTOTYPE: "".join(리스트) && "특정 문자열".join(리스트)

# 1. "".join(리스트) 형태입니다.

>>> str = "Hi my name is limcoing" 
>>> splitted_str = str.split() 
>>> print(splitted_str) 
['Hi', 'my', 'name', 'is', 'limcoing'] 

>>> joined_str = "".join(splitted_str) 
>>> print(joined_str) 
Himynameislimcoing 
# 2. "특정 문자열".join(리스트) 형태입니다.

>>> str = "Hi my name is limcoing" 
>>> splitted_str = str.split() 
>>> print(splitted_str) 

['Hi', 'my', 'name', 'is', 'limcoing'] 

>>> joined_str = "-".join(splitted_str) 
>>> print(joined_str) 

Hi-my-name-is-limcoing 

4.1.2 Split function

- split() 함수는 문자열을 쪼개주는 함수입니다. 이 함수는 파라미터로 구분자를 주면 해당 구분자를 기준으로 문자열을 잘라 리스트 형식으로 반환합니다. 만약 파라미터에 아무것도 주지 않으면 공백을 기준으로 문자를 나눠줍니다.

PROTOTYPE: 문자열.split(구분자)

>>> str = "Hi my name is limcoing" 
>>> splitted_str = str.split() 
>>> print(splitted_str) 

['Hi', 'my', 'name', 'is', 'limcoing']

4.2 reverse vs reversed

4.2.1 reverse

1. reverse 함수는 list 타입에서 제공하는 함수입니다.

l = ['a', 'b', 'c']
t = ('a', 'b', 'c')
d = {'a': 1, 'b': 2, 'c': 3}
s = 'abc'

l.reverse()  # list의 순서를 뒤집어줌
t.reverse()  # AttributeError: 'tuple' object has no attribute 'reverse'
d.reverse()  # AttributeError: 'dict' object has no attribute 'reverse'
s.reverse()  # AttributeError: 'str' object has no attribute 'reverse'

2. reverse는 값을 반환하지 않고, 단순히 해당 list를 뒤섞어 줍니다.

l = ['a', 'b', 'c']
l_reverse = l.reverse()

print(l_reverse)  # None
print(l)  # ['c', 'b', 'a']

4.2.1 reversed

1. reversed는 내장함수로, list에서 제공하는 함수가 아닙니다.

l = ['a', 'b', 'c']
t = ('a', 'b', 'c')
d = {'a': 1, 'b': 2, 'c': 3}
s = 'abc'

reversed(l)  # <listreverseiterator object at 0x101053c10>
reversed(t)  # <reversed object at 0x101053b50>
reversed(d)  # TypeError: argument to reversed() must be a sequence
reversed(s)  # <reversed object at 0x101053c10>

2. reverse는 'reversed' 객체를 반환합니다.

l = ['a', 'b', 'c']
t = ('a', 'b', 'c')
s = 'abc'

reversed(l)  # <listreverseiterator object at 0x101053c10>
reversed(t)  # <reversed object at 0x101053b50>
reversed(s)  # <reversed object at 0x101053c10>
profile
삽질의 기록들🐥

0개의 댓글