Learn to share,Share to learn
join함수 이해 본문
https://www.acmicpc.net/problem/10610
10610번: 30
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한
www.acmicpc.net
브레인스토밍
N = input()
sum = 0
for i in range(int(N)):
sum += int(N[i])
if (sum % 3 == 0):
#3의배수 순서대로 비교후 break
else:
print(-1)
3의 배수가 아니라 30의 배수인데 잘못작성했다.
실제 코드
N = input()
# 3의 배수 확인을 위한 합계 계산
sum_of_digits = sum(int(digit) for digit in N)
# 0의 포함 여부와 3의 배수 조건 확인
if '0' in N and sum_of_digits % 3 == 0:
# 숫자들을 내림차순으로 정렬
result = ''.join(sorted(N, reverse=True))
print(result)
else:
print(-1)
여기서 join 함수에 대하여 잘 모르고있었다. 문자열이나 리스트에서 저걸 이용하면 하나로 연결시킬수 있다.. 정도. 예를들어, ''.join을 통해 [A,B,C]를 ABC로 묶을수 있다? 이렇게만 간단하게 알고있었는데 이번기회에 공부했다.
Python의 join() 함수 이해하기
Python에서 문자열을 다룰 때 자주 사용되는 함수 중 하나는 join() 함수입니다. 이 함수는 여러 개의 문자열을 하나의 문자열로 결합하는 데 사용됩니다. join() 함수는 문자열, 리스트, 튜플 등 이터러블(iterable) 객체에 포함된 문자열 요소들을 결합할 수 있습니다.
join() 함수의 기본 구조
join() 함수는 다음과 같은 형식으로 사용됩니다:
'구분자'.join(이터러블)
여기서 '구분자'는 결합할 문자열 사이에 삽입될 문자열입니다. '이터러블'은 결합할 문자열의 시퀀스(리스트, 튜플, 문자열 등)입니다.
이터러블(Iterable)이란?
이터러블은 멤버를 하나씩 차례대로 접근할 수 있는 모든 객체를 의미합니다. Python의 리스트, 튜플, 세트, 딕셔너리, 문자열 등이 이에 해당합니다. 각 요소가 연속적으로 이어져 있으며, for 루프 등을 통해 이 요소들을 순회할 수 있습니다.
join() 함수 사용 예시
예를 들어, 아래와 같은 리스트가 있을 때 이 리스트의 모든 요소를 쉼표와 공백으로 구분하여 하나의 문자열로 결합하려면 다음과 같이 join() 함수를 사용할 수 있습니다:
words = ["apple", "banana", "cherry"]
result = ", ".join(words)
print(result) # 출력: apple, banana, cherry
문자열도 이터러블
문자열도 Python에서는 이터러블로 간주됩니다. 따라서 문자열에 join() 함수를 사용할 수 있습니다. 문자열을 이터러블로 취급하면, 각 문자가 시퀀스의 요소가 됩니다.
join() 함수를 사용한 문제 해결 예시
문제: 어느 날, 미르코는 길거리에서 양수 N을 보았습니다. 미르코는 숫자들을 섞어 3의 배수가 되는 가장 큰 수를 만들고 싶어합니다.
해결 방법:
- N의 각 숫자들의 합이 3의 배수인지 확인합니다.
- 3의 배수 조건을 만족한다면, 숫자들을 내림차순으로 정렬하여 가장 큰 수를 만듭니다.
- 3의 배수 조건을 만족하지 않으면, 3의 배수를 만들 수 없으므로 -1을 출력합니다.
N = "21124832" # 예시 입력
# 3의 배수 확인을 위한 합계 계산
sum_of_digits = sum(int(digit) for digit in N)
# 3의 배수 조건 확인
if sum_of_digits % 3 == 0:
# 숫자들을 내림차순으로 정렬
result = ''.join(sorted(N, reverse=True))
print(result) # 예시 출력: 84322211
else:
print(-1)
이 예시에서 sorted(N, reverse=True)는 문자열 N의 각 문자를 내림차순으로 정렬한 리스트를 생성합니다. 그 후 ''.join(sorted_N)은 정렬된 문자들을 빈 문자열을 구분자로 사용하여 결합합니다.
결론
join() 함수는 Python에서 문자열을 효율적으로 결합하고자 할 때 매우 유용합니다. 이 함수를 사용하여 간결하고 읽기 쉬운 코드를 작성할 수 있으며, 다양한 유형의 이터러블에서 문자열 요소들을 쉽게 결합할 수 있습니다.
'알고리즘' 카테고리의 다른 글
튜플로 리스트 저장하기(2개 이상의 값들 리스트로 저장하기) (0) | 2024.01.26 |
---|---|
알고리즘 팁2 (0) | 2024.01.26 |
부분합 (0) | 2024.01.25 |
리스트 입력 여러개 받기과 이진탐색 (0) | 2024.01.25 |
1181 집합 원소 길이별 정렬 (1) | 2024.01.25 |