문자열을 배열로 바꾸기

2dean·2023년 5월 14일
1

java 기초

목록 보기
2/3
post-thumbnail

문제 1 - toCharArray()

입력

abcde

출력

a
b
c
d
e

풀이

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        
        // 배열로 바꾸기
        char[] strArr = a.toCharArray();
        
        for (int i = 0; i < strArr.length; i++) {
            System.out.println(strArr[i]);
        }
        
    }
}

문제2 : 문자열 섞기

문제설명

길이가 같은 두 문자열 str1과 str2가 주어집니다.
두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 1 ≤ str1의 길이 = str2의 길이 ≤ 10
  • str1과 str2는 알파벳 소문자로 이루어진 문자열입니다.

입출력 예

str1str2result
"aaaaa""bbbbb""ababababab"

풀이

class Solution {
    public String solution(String str1, String str2) {
        
        char[] arr1 = str1.toCharArray();
        char[] arr2 = str2.toCharArray();
        char[] arr3 = new char[str1.length() + str2.length()];

        for(int i = 0; i < arr1.length; i++) {
            arr3[2*i] = arr1[i];
            arr3[2*i+1] = arr2[i];
        }

        String answer = new String(arr3);

        return answer;
        
    }
}
  • 원래 for 문 안에서
       for(int i = 0; i < arr3.length; i++) {
            arr3[i] = arr1[i];
            arr3[i+1] = arr2[i];
        }

이렇게 작성했는데 빌드 오류가 발생했음

이렇게 작성했을때 문제는 없지만
이렇게 초기화하면 배열 인덱스 i가 arr3.length - 1일 때 arr3[i+1]은 배열 인덱스를 초과해서 ArrayIndexOutOfBoundsException 예외가 발생할 가능성이 있다고 한다.

그래서 아래와 같이 수정!

for(int i = 0; i < str1.length(); i++) {
   arr3[2*i] = arr1[i];
   arr3[2*i+1] = arr2[i];
}

이렇게 수정하면 arr3 배열의 인덱스가 항상 arr3.length - 1을 초과하지 않는다!

profile
냅다 써보는 공부의 흔적😇

0개의 댓글