24-2아래 Java 프로그램이 출력하는 문자열을 적으시오.public… | 2024년 정보처리기사실기 2회차 기출문제 상세 페이지
13
24-2
아래 Java 프로그램이 출력하는 문자열을 적으시오.
public class Main {
static String keep(String s, int i, boolean[] used) {
if (i == s.length()) return "";
char c = s.charAt(i);
if (used[c]) return keep(s, i + 1, used);
used[c] = true;
String rest = keep(s, i + 1, used);
return rest + c;
}
public static void main(String[] args) {
boolean[] used = new boolean[128];
System.out.println(keep("mississippi", 0, used));
}
}해설
psim
[해설]
keep은 앞에서부터 문자를 보며, 처음 나온 문자만 used에 표시하고 이미 나온 문자는 건너뛴다.
- "mississippi"에서 처음 나오는 문자: m(0), i(1), s(2), p(8)
- 각 호출은 rest + c, 즉 뒤쪽 결과 뒤에 자기 문자를 붙여 돌려준다.
- p → "p", s → "ps", i → "psi", m → "psim"
재귀가 되돌아오면서 순서가 뒤집히므로 출력은 psim이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.