문자열을 리스트로 만들기
str = "python"
my_list = list(str)
print(my_list) #['p', 'y', 't', 'h', 'o', 'n']
# 구분자를 기준으로 분리
str = "a,b,c,d,e"
my_list = str.split(',')
print(my_list) #['a', 'b', 'c', 'd', 'e']
리스트를 합쳐 문자열로 만들기
'구분자'.join(리스트)
알파벳 다루기
# ord('A')는 65, ord('Z')는 90이므로, 범위를 이용하여 딕셔너리 생성
for i in range(ord('A'), ord('Z')+1):
alpha_dict[chr(i)] = i - ord('A') # 'A'부터 'Z'까지의 알파벳을 키로, 해당하는 값은 0부터 25까지의 숫자가 됨
int <-> String
str(23)
type(days)
# '23'
# <class 'str'>
문자열 비교
- 문자 단위 비교: 두 문자열을 구성하는 각 문자를 앞에서부터 차례대로 비교합니다. 비교하는 두 문자가 다를 경우, 유니코드 값이 더 큰 문자를 가진 문자열이 더 크다고 판단합니다.
- 유니코드(ASCII) 값: 문자열을 구성하는 각 문자는 유니코드(또는 ASCII) 값에 따라 순서가 정해집니다. 예를 들어, ASCII 코드에서 대문자 'A'는 65, 소문자 'a'는 97의 값을 가지며, 'A' < 'a'로 비교됩니다. 유니코드에서도 비슷한 원칙이 적용되며, 각 문자의 유니코드 값에 따라 순서가 결정됩니다.
- 길이 비교: 모든 문자가 같고 두 문자열의 길이가 다를 경우, 길이가 짧은 문자열이 더 작다고 간주됩니다.
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
numbers의 길이는 1 이상 100,000 이하입니다.
numbers의 원소는 0 이상 1,000 이하입니다.
정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
def solution(numbers):
# 숫자를 문자열로 변환하여 비교할 수 있도록 리스트 생성
str_numbers = list(map(str, numbers))
# 문자열 비교를 위해 정렬 (x*3은 숫자가 1000 이하라는 조건에 기반함)
str_numbers.sort(key=lambda x: x*3, reverse=True)
# 정렬된 문자열을 합쳐서 결과 생성
answer = ''.join(str_numbers)
# 모든 숫자가 0인 경우 '0' 하나만 반환
return answer if answer[0] != '0' else '0'
'Algorithm > Python' 카테고리의 다른 글
Hash table = dictionary (in python) (0) | 2024.04.04 |
---|---|
반복문 (0) | 2024.04.03 |
List (2) | 2024.04.03 |
Stack (0) | 2024.04.03 |
IT 관련 회사 코딩테스트를 준비하기 위한, 공부 계획 (1) | 2024.04.03 |