본문 바로가기
Data structure & Algorithm/이코테

[이코테] 알고리즘 유형별 기출문제 08 문제 풀이 (Python)

by LydiaRyu 2022. 8. 4.
반응형

「이것이 취업을 위한 코딩 테스트다」  p. 322 

알고리즘 유형별 기출문제 08번 - 문자열 재정렬

 

🧩 문제 설명

 

알파벳 대문자와 숫자(0~9)로만 이루어진 문자열을 입력받아 모든 알파벳을 오름차순으로 정렬한 뒤, 그 뒤에 모든 숫자를 더한 값을 출력하기

입력 예시 

ADC4GX683

출력 예시

ACDGX21

 

😃 문제 풀이

 

data = input()
result = []
value = 0

 

  • 문자열을 input() 함수를 통해 입력받는다. 
  • 결과 값을 저장하기 위해 빈 리스트를 생성한다. result =  []
  • 숫자의 합을 출력해야 하기 때문에 계속해서 합을 할 수 있도록 변수 하나를 생성한다. value = 0

 

for i in data:
	if i.isalpha():
    	result.append(i)
        
    else:
    	value += int(i)

 

  • for 문을 이용하여 입력받은 문자열이 알파벳인지 숫자인지 하나씩 확인한다. 
  • isalpha() 함수를 사용하여 문자가 알파벳인지 확인할 수 있다. 만약 알파벳이라면, result 리스트에 append를 사용하여 추가한다. 
  • 알파벳이 아니라면 문자를 int함수를 이용해 정수형으로 바꿔준 뒤 value 값에 더해준다. (계속해서 합을 하기 위해)

 

result.sort()

 

  • 알파벳이 오름차순으로 정렬되게 하기 위해 sort 함수를 사용하여, 문자열을 정렬한다.

 

if value != 0:
	result.append(value)

 

  • 숫자가 존재한다면, 모든 숫자의 합으로 만든 value 값을 알파벳 정렬이 된 리스트인 result에 append를 활용하여 붙여준다.

 

print("".join(result))

 

  • 마지막으로 출력을 하기 위해, join 함수를 사용한다. join 함수는 리스트를 구분자를 사용하여 문자열로 바꾸어주는 함수이다. 구분자 없이 문자열로 만들기 위해 ""를 사용했다.
728x90

댓글