인프런 커뮤니티 질문&답변
저는 이렇게 풀었는데요 ! 왜 앞에 null이 붙는지 모르겠습니다 ㅠㅠ
작성
·
638
0
아 그리고 이렇게 풀면 효율성이 많이 떨어지는지도 궁금합니다 !
package algorithm;
import java.util.*;
public class Main {
public String[] solution(int n, String[] arr) {
String[] answer = new String[n];
for (int i = 0; i < n; i++) {
for (int k = arr[i].length() - 1; k >= 0; k--) {
answer[i] += arr[i].charAt(k);
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] arr = new String[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.next();
}
// T.solution(n, arr);
for (String s : T.solution(n, arr)) {
System.out.println(s);
}
}
}
퀴즈
대소문자를 구분하지 않고 문자열 내 특정 문자의 총 개수를 세려면, 어떤 방법이 가장 효율적일까요?
문자열을 반복하며 각 문자가 찾으려는 문자의 대문자 또는 소문자인지 모두 비교한다.
문자열 전체를 한 가지 케이스(예: 모두 대문자)로 통일한 후 해당 문자의 개수를 센다.
대문자와 소문자의 개수를 각각 세어 합산한다.
Set 자료구조를 사용하여 중복 없이 문자를 저장한 후 개수를 센다.
답변 2
0
와... String 배열을 만들었을 때 기본적으로 null값으로 초기화 되는건 알았지만..제가 += 을 사용했을 때 바로 null값이 사라지고 들어가는줄 착각하고 있었네요..! 고맙습니다 !
0
김태원
지식공유자
안녕하세요^^
String 배열을 만들면 기본적으로 null값으로 초기화되기 때문입니다.
아래와 같이 바꾸세요.
public String[] solution(int n, String[] arr) {
String[] answer = new String[n];
for (int i = 0; i < n; i++) {
answer[i]="";
for (int k = arr[i].length() - 1; k >= 0; k--) {
answer[i] += arr[i].charAt(k);
}
}
return answer;
}




