테디준·2022년 9월 16일
0

문자열 결합

입력 받을 문자열 수와 문자열을 입력받고 출력 포멧에 맞게 출력하세요.

n // 입력 받을 문자열 수
s_1 // 문자열
s_2
..
s_n

Hello s_1,s_2,..s_n.

void main() {
  // Hello Java,Gino.
  print(solution(['Java', 'Gino'])); 
  
  // Hello Alice,Bob,Carol,Dave,Ellen.
  print(solution(['Alice', 'Bob', 'Carol', 'Dave', 'Ellen' ])); 
}

풀이방법 1. For문을 사용한다.

String solution(List<String> texts) {
  String result = 'Hello ';
  for(int i = 0; i < texts.length; i++) {
    result += texts[i];
    if(i < texts.length - 1) {
      result += ',';
    } else {
      result += '.';
    }
  }
  return result;
}

풀이방법 2. StringBuffer를 사용한다.

For문과 계속 더하는 +연산을 사용하면 입력받는 문자열의 수가 100만 개가 넘을 때, 처리속도가 느려지거나 에러가 나는 경우가 생겨서 StringBuffer를 사용해 풀어보았다.

String solution(List<String> texts) {
  final result = StringBuffer(‘Hello ‘);
  for(int i = 0; i < texts.length; i++) {
    result.write(‘${texts[i]},);
  }
  return result.toString().substring(0, result.length - 1) +.;
}

풀이방법 3. fold를 사용한다.

1) substring 사용

String solution(List<String> texts) {
  final result = texts
      .fold<String>('Hello ', (prev, next) => '$prev$next,');

  return '${result.toString().substring(0, result.length - 1)}.';
}

2) replaceRange 사용

String solution(List<String> texts) {
  final result = texts
      .fold<String>('Hello ', (prev, next) => '$prev$next,');

  return result.replaceRange(result.length - 1, null, '.');
}

풀이방법 4

String solution(int N, int M) {
  return (N + M).isOdd ? 'YES' : 'NO';
}

0개의 댓글