강의

문제

알파벳 대문자와 숫자(0~9)로만 구성된 문자열이 입력으로 주어진다. 이때 모든 알파멧을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력한다.
(K1KA5CB7을 입력하면 ABCKK13을 출력한다.)

  • 숫자 = 0~9
  • 수 = 100, 1000 ...?????

    입력 조건 : 첫째 줄에 하나의 문자열 S가 주어진다. (1<=S의 길이<=10,000)
    출력 조건 : 첫째 줄에 문제에서 요구하는 정답을 출력한다.

내 생각

  1. 알파벳만 따로 뽑아서 정렬 하려고 했는데, 처음부터 다 문자열로 작성을 하네...?

  2. 숫자는 문자열로 적혀도 int로 변환이 가능하니까 문자 하나하나를 비교해야하나?
    ---> try-except, 조건문으로 알파벳과 정수 구별

  3. 알파벳은 어떻게 정렬해야하지..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는 따로 생성할 필요가 없었다. 숫자는 정렬하는게 아니라 그냥 더해주는거였으니까.

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN