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]);
}
}
}
길이가 같은 두 문자열 str1과 str2가 주어집니다.
두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.
str1 | str2 | result |
---|---|---|
"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(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을 초과하지 않는다!