Day3 - 문자 리스트를 문자열로 변환하기

2025. 7. 10. 10:58·CODING TEST/programmers

📌 문제 정보

- 문제 이름 : 코딩 기초 테스트 - 문자 리스트를 문자열로 변환하기

- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181941

 

 

📌 문제 요약

- 핵심 조건: arr의 원소들을 순서대로 이어 붙인 문자열을 return

- 제한:  1 ≤ arr의 길이 ≤ 200 ( arr의 원소는 전부 알파벳 소문자로 이루어진 길이가 1인 문자열)

 

 

📌 내 풀이 및 코드

class Solution {
    public String solution(String[] arr) {        
        StringBuilder sb = new StringBuilder();

        for (int i=0; i<=arr.length-1; i++) {
            sb.append(arr[i]);
        }

        return sb.toString();
    }
}

- 이것도... 모르겠어서 힌트봄

- for 조건식 i=1, i<arr.length 로 하는게 더 간단함.

 

 

📌 다른 사람들 풀이

// 1
return String.join("", arr);


// 2
String answer = "";
for (String a : arr) {
    answer += a;
}


// 3
return Arrays.stream(arr).collect(Collectors.joining());


// 4
StringBuilder sb = new StringBuilder();
for (String s : arr) {
    sb.append(s);
}
return sb.toString();

<-- 다른 풀이 요약 -->

- 1 : String.join : StringBuilder 안 쓰고 한 줄로 해결. (내부적으로 StringBuilder처럼 처리함. 배열이면 가능하지만 int[]는 불가)

- 2 : for-each문 + += : StringBuilder 안 쓰고 그냥 + 연산으로 누적. (매번 새 String 객체를 만들어서 배열 길이 길면 효율 떨어짐)

- 3 : Stream + Collectors.joining : Stream API 사용 (StringBuilder처럼 처리 되고 스트림 방식은 깔끔함. 구분자 넣기 편함)

- 4 : 내 코드랑 거의 동일하지만 for (int i) 대신 for-each로 됨. (가독성이 좋음. 아주 추천하는 방)



📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** String.join **

- 문자열 배열 붙이기 (배열은 String[]만 가능하고 int[]는 안됨. -> 숫자 배열은 String[]으로 변환 후 사용할 수 있음.)

- 자동으로 StringBuilder처럼 처리하기 때문에 빠르고 간결함.

// 기본 개념
String result = String.join(구분자, 배열);		// 구분자 : 원소들 사이에 넣고 싶은 문자


// 기본 예시
String[] arr = {"a", "b", "c"};

String result = String.join("", arr); // 구분자 없음
System.out.println(result); // "abc"

String result2 = String.join(",", arr); // 쉼표로 붙이기
System.out.println(result2); // "a,b,c"

 

** Stream + Collectors.joining **

- Stream으로 배열 또는 리스트를 순회. (Collectors.joining() 문자열 하나로 합침.)

- Collectors.joining()은 내부에서 StringBuilder를 사용함.

- 숫자 배열 (int[ ])는 바로 안 됨. -> boxed()로 Stream<Integer>로 바꿔야 함. (mapToObj로 변환 필요)

// 기본 예시
import java.util.Arrays;
import java.util.stream.Collectors;

String[] arr = {"a", "b", "c"};

String result = Arrays.stream(arr)
                      .collect(Collectors.joining());
System.out.println(result); // "abc"



// 구분자, 접두어, 접미어 추가한 경우
String result = Arrays.stream(arr)
                      .collect(Collectors.joining("-", "[", "]"));     // 출력: [a-b-c]
                      
                      
// 자주 하는 실수 예시
int[] nums = {1, 2, 3};
String result = Arrays.stream(nums)
                      .mapToObj(String::valueOf) // int → String
                      .collect(Collectors.joining());          		   // result: "123"

.. 어려움.... 다시 보기

'CODING TEST > programmers' 카테고리의 다른 글

Day4 - 홀짝에 따라 다른 값 반환하기  (0) 2025.07.11
Day3 - 문자열 곱하기  (0) 2025.07.10
Day3 - 두 수의 연산값 비교하기  (0) 2025.07.10
Day3 - 문자열 섞기  (0) 2025.07.10
Day2 - 문자열 겹쳐쓰기  (0) 2025.07.09
'CODING TEST/programmers' 카테고리의 다른 글
  • Day4 - 홀짝에 따라 다른 값 반환하기
  • Day3 - 문자열 곱하기
  • Day3 - 두 수의 연산값 비교하기
  • Day3 - 문자열 섞기
iamyuunzo
iamyuunzo
https://github.com/iamyuunzo
  • iamyuunzo
    iamyuunzo
    iamyuunzo
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Study (5)
        • App Developer (0)
        • Algorithm study (0)
        • Google AI Essentials (3)
      • Project (3)
        • 감행 (3)
        • Tokkit (0)
        • 다시, 봄 (0)
        • Clone Coding (0)
      • 자격증 모음 (5)
        • AWS Certification (1)
        • 정보처리기사 (0)
        • 빅데이터분석기사 (1)
        • TOEIC Speaking (3)
      • CODING TEST (79)
        • baekjoon (26)
        • programmers (20)
        • MySQL (31)
        • COS Pro (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Programmers
    우리 fisa
    프로젝트 리팩토링
    감행
    클라우드서비스개발
    java
    우리fisa
    COS Pro
    baekjoon
    toeic speaking
    회고
    우리fis아카데미
    회고록
    SQL
    백준
    CLF-C02
    AWS Certification
    토익 스피킹
    프로그래머스
    AWS Certified Cloud Practitioner
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
iamyuunzo
Day3 - 문자 리스트를 문자열로 변환하기
상단으로

티스토리툴바