[JS] Q08 문자열 재정렬

Hadam Cho·2021년 4월 6일
1

Algorithm

목록 보기
8/32

제한 사항

난이도풀이 시간시간 제한메모리 제한
120분1초128MB

문제

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

예를 들어 K1KA5CB7이라는 값이 들어오면 ABCKKK13을 출력합니다.


입력 조건

  • 첫째 줄에 하나의 문자열 S가 주어집니다. (1 ≤ S의 길이 ≤ 10,000)

출력 조건

  • 첫째 줄에 문제에서 요구하는 정답을 출력합니다.

소스 코드

function solution(S) {
  let sum = 0;
  const alphabet = []
  for (let i = 0; i < S.length; i++) {
    if (!isNaN(Number(S[i]))) {
      sum += Number(S[i]);
    } else {
      alphabet.push(S[i]);
    }
  }

  alphabet.sort();
  let result = '';
  for (let i = 0; i < alphabet.length; i++) {
    result += alphabet[i];
  }
  if (sum !== 0) {
    result += sum;
  }
    
  console.log(result);
}

정답

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

# 문자를 하나씩 확인하며
for x in data:
	# 알파벳인 경우 결과 리스트에 삽입
    if x.isalpha():
    	result.append(x)
    # 숫자는 따로 더하기
    else:
    	value += int(x)
        
# 알파벳을 오름차순으로 정렬
result.sort()

# 숫자가 하나라도 존재하는 경우 가장 뒤에 삽입
if value != 0:
	result.append(str(value))
    
# 최종 결과 출력(리스트를 문자열로 변환하여 출력)
print(''.join(result))

느낀 점

배열을 문자열로 출력할 때 join 방법이 있다는 것을 알고 있었지만 적용하지 못했는데 이젠 비슷한 형식의 문제가 나오면 적용할 수 있을 것 같다.

JavaScript의 join
array.join(str)

profile
(。・∀・)ノ゙

0개의 댓글