문제
Note
- .chatAt()
제출 코드
String answer = "";
for(int i = 0; i<str1.length(); i++){
String s1 = Character.toString(str1.charAt(i));
String s2 = Character.toString(str2.charAt(i));
answer += s1 + s2;
}
return answer;
단순하고 정직한 방법으로 작성했다. chatAt 후에 더 하면 char 타입 끼리 더해지기 때문에 숫자가 나온다.
그래서 문자열로 변환을 하는 번거로운 작업을 했다.
하지만 제출 후에 다른 사람 답을 통해서 간단히 해결할 수 있다는 것을 알았다.
answer 가 이미 String타입이기 때문에 하나씩 더해주면 charAt을 사용하고도 타입 변환없이 문자열을 유지할 수 있다.
String answer = "";
for(int i = 0; i < str1.length(); i++){
answer+= str1.charAt(i);
answer+= str2.charAt(i);
}
return answer;
+
아래는 두 코드의 차이를 ChatGPT에 확인해본 결과이다.
두 코드의 기능은 동일하게 두 문자열 str1
과 str2
를 번갈아가며 문자들을 결합하여 새로운 문자열 answer
를 만드는 것입니다. 그러나 구현 방식에서 몇 가지 차이가 있습니다.
1. 문자 결합 방식
첫 번째 코드:
for(int i = 0; i < str1.length(); i++){
answer += str1.charAt(i);
answer += str2.charAt(i);
}
str1.charAt(i)
와str2.charAt(i)
로 각 문자열에서 문자를 바로 추출한 뒤answer
에 직접 덧붙입니다.- 즉,
char
를 바로answer
에 추가하는 방식입니다.
두 번째 코드:
for(int i = 0; i<str1.length(); i++){
String s1 = Character.toString(str1.charAt(i));
String s2 = Character.toString(str2.charAt(i));
answer += s1 + s2;
}
str1.charAt(i)
와str2.charAt(i)
로 각 문자를 추출한 뒤Character.toString()
을 사용하여char
를String
으로 변환하고, 그 변환된 문자열을answer
에 추가합니다.- 즉,
char
를 먼저String
으로 변환한 후 문자열을 결합합니다.
2. 성능 측면
- 첫 번째 코드가 더 효율적입니다.
str1.charAt(i)
와str2.charAt(i)
를 직접answer
에 추가하기 때문에 불필요한 변환 과정이 없습니다. - 두 번째 코드는 각
char
를String
으로 변환하는 추가 작업이 있어 약간의 성능 저하가 발생할 수 있습니다. 특히 루프 안에서 반복적으로 변환 작업이 수행되므로 첫 번째 코드보다 느릴 수 있습니다.
3. 코드 가독성
- 두 번째 코드가
char
를String
으로 명시적으로 변환하므로, 각 단계가 좀 더 명확할 수 있지만, 그만큼 불필요한 코드가 추가된 측면도 있습니다.
결론:
- 첫 번째 코드는 더 간결하고 효율적이며 불필요한 변환을 하지 않으므로 성능 면에서 유리합니다.
- 두 번째 코드는 명시적으로 변환 과정을 보여주지만, 성능상으로는 다소 비효율적입니다.
반응형
'코딩테스트 > Java' 카테고리의 다른 글
[Java] ArrayList, 컬렉션 프레임워크, 인터페이스, 제네릭 - lv.0 5명씩 (3) | 2024.03.05 |
---|---|
[Java]프로그래머스lv.0 분수의 덧셈 (0) | 2024.02.02 |
[Java]삼항연산자(Ternary Operator) - lv.0 숫자비교하기 lv.1 짝수와 홀수 (0) | 2024.01.29 |