알파벳 대문자와 숫자(0~9)로만 구성된 문자열이 입력으로 주어진다. 이때 모든 알파멧을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력한다.
(K1KA5CB7을 입력하면 ABCKK13을 출력한다.)
입력 조건 : 첫째 줄에 하나의 문자열 S가 주어진다. (1<=S의 길이<=10,000)
출력 조건 : 첫째 줄에 문제에서 요구하는 정답을 출력한다.
알파벳만 따로 뽑아서 정렬 하려고 했는데, 처음부터 다 문자열로 작성을 하네...?
숫자는 문자열로 적혀도 int로 변환이 가능하니까 문자 하나하나를 비교해야하나?
---> try-except, 조건문으로 알파벳과 정수 구별
알파벳은 어떻게 정렬해야하지..str은 sort() 함수가 적용이 안됨;
---> 뭐야? 되네?
alphabet_list.sort() print(alphabet_list,sum) ---> 이런식으로 적어야 한다. print(alphabet_list.sort(),sum) ---> None을 반환한다.....근데 왜...?
print 안에 .sort( )를 쓰니까 안됐었음
strings = input() number_list =[] alphabet_list=[] for string in strings: try: if int(string) in [0,1,2,3,4,5,6,7,8,9]: number_list.append(string) except: alphabet_list.append(string) sum = 0 for number in number_list: num = int(number) sum = sum + num alphabet_list.sort() print(''.join(alphabet_list),sum)
?? 12일 만에 들어와서 다시 작성한건데 실행이 되네???ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
문자열이 입력됐을 때 문자를 하나씩 확인한다. 숫자인 경우 따로 합계를 계산한다. 알파벳의 겨우 별도의 리스트에 저장한다. 결과적으로 리스트에 저장된 알파벳을 정렬해 출력하고, 합계를 뒤에 붙여 출력하면 정답이다.
data = input() result = [] value=0 for x in data: if x.isalpha(): result.append(x) else: value += int(x) #value = value + int(x) result.sort() if value != 0: result.append(str(value)) print(''.join(result))
isalpha( ) 이런 함수가 있는지 몰랐어서 try-except문으로 if int(string) in [0,1,2,3,4,5,6,7,8,9]:
적었다. 결과는 똑같지만, 함수를 사용하는게 더 좋지 않을까?! 이유는 몰라!!............
파이썬 알파벳/숫자인지 확인하기
join함수를 통해 리스트 str로 변환해줘야 한다.
리스트 ---> 문자열 변환 : join이라는 함수를 알게되었다.
'구분자'.join(리스트)
주의!!!!!!!!!!
join을 쓸 때, list의 모든 element들은 string이여야 한다!!! list에 저장된 값이 정수이거나 실수면 TypeError: sequence item 0: expected str instance, int found
라는 에러가 뜨게 된다. 즉, 모든 element들을 str형으로 바꾸어 주어야 리스트가 문자열로 변환이 된다!!
리스트->문자열
if value != 0:
이 구절은 생각지도 못했다. 당연히 숫자가 없으면, 아무것도 출력이 안되여야 하는게 맞으니까. 아직 갈길이 멀었다....
strings = input() value = 0 alphabet_list=[] for string in strings: try: if int(string) in [0,1,2,3,4,5,6,7,8,9]: value = value + int(string) except: alphabet_list.append(string) alphabet_list.sort() if value != 0: alphabet_list.append(str(value)) print(''.join(alphabet_list))
내 코드에서 수정함. number_list는 따로 생성할 필요가 없었다. 숫자는 정렬하는게 아니라 그냥 더해주는거였으니까.