20년 1회
class Main {
static int[] arr() {
int a[]=new int[4];
int b = a.length;
for(int i =0; i<b;i++)
a[i]=i;
return a;
}
public static void main(String args[]) {
int a[]=arr();
for(int i =0; i< a.length; i++)
System.out.print(a[i]+" ");
}
}
✅ 정답
0 1 2 3
✏️문제 풀이
20년 2회
(가)에 들어갈 알맞은 답을 쓰시오
class Parent{
void show(){System.out.println("parent");}
}
class Child extends Parent{
void show() {System.out.println("child");}
}
class Main {
public static void main(String args[]) {
Parent pa=(가) Child();
pa.show();
}
}
✅ 정답
new
✏️문제 풀이
1. 클래스 구조
자바 키워드 및 개념
키워드 | 설명 |
---|---|
new | 객체를 생성할 때 사용. |
class | 클래스를 정의할 때 사용. |
extends | 클래스를 상속할 때 사용. |
void | 반환값이 없는 메서드를 정의할 때 사용. |
static | 클래스에 속하는 메서드나 변수를 정의할 때 사용. |
public | 접근 제어자로, 모든 클래스에서 접근 가능. |
private | 접근 제어자로, 같은 클래스 내에서만 접근 가능. |
protected | 접근 제어자로, 같은 패키지와 상속받은 클래스에서 접근 가능. |
abstract | 추상 클래스를 정의할 때 사용. |
interface | 인터페이스를 정의할 때 사용. |
implements | 인터페이스를 구현할 때 사용. |
this | 현재 객체를 참조할 때 사용. |
super | 부모 클래스의 메서드나 생성자를 호출할 때 사용. |
20년 2회😿
출력 결과는?
class A{
private int a;
public A(int a){
this.a = a;
}
public void display(){
System.out.println("a=" + a);
}
}
class B extends A {
public B(int a){
super(a);
super.display();
}
}
public class Main {
public static void main(String[] args){
B obj = new B(10);
}
}
✅ 정답
✏️문제 풀이
1. B 객체 생성: B obj = new B(10);에서 B의 객체를 만들고 매개변수로 10을 전달.
B obj = new B(10);
public B(int a) {
super(a); // A 클래스의 생성자를 호출
}
public A(int a) {
this.a = a; // a에 10을 저장
}
public void display() {
System.out.println("a=" + a); // a의 값을 출력
}
20년 2회
출력 결과는?
public class Main{
public static void main(String[] args){
int i=0, c=0;
while (i<10){
i++;
c*=i;
}
System.out.println(c);
}
}
✅ 정답
0
✏️문제 풀이
while (i < 10) {
i++;
c *= i; // c는 항상 0
}
20년 3회😿
출력 결과는?
abstract class Vehicle{
String name;
abstract public String getName(String val);
public String getName(){
return "Vehicle name:" + name;
}
}
class Car extends Vehicle{
private String name;
public Car(String val){
name=super.name=val;
}
public String getName(String val){
return "Car name : " + val;
}
public String getName(byte val[]){
return "Car name : " + val;
}
}
public class Main {
public static void main(String[] args){
Vehicle obj = new Car("Spark");
System.out.print(obj.getName());
}
}
✅ 정답
✏️문제 풀이
Vehicle
String name;
: 이름을 저장하는 변수.abstract public String getName(String val);
: 추상 메서드 선언.public String getName()
: name
을 반환하는 메서드.Car
클래스Car
는 Vehicle
을 상속받습니다.Car(String val)
에서 super.name = val;
로 부모 클래스의 name
을 초기화.public String getName(String val)
: 매개변수 val
을 사용하여 "Car name :"을 반환.Main
클래스
Vehicle obj = new Car("Spark");
System.out.print(obj.getName());
20년 3회😿
출력 결과는?
public class Main {
public static void main(String[] args){
int i=0, sum=0;
while (i<10){
i++;
if(i%2 ==1)
continue;
sum += i;
}
System.out.println(sum);
}
}
✅ 정답
30
✏️문제 풀이
int i = 0, sum = 0;
i
는 루프 카운터, sum
은 짝수의 합을 저장할 변수.while 루프
while (i < 10) {
i++; // i를 1 증가시킵니다.
if (i % 2 == 1) // i가 홀수인 경우
continue; // 다음 반복으로 건너뜀.
sum += i; // i가 짝수인 경우 sum에 더함
}
20년 4회
다음은 변수 n에 저장된 10진수를 2진수로 변환하여 출력하는 java프로그램이다. 프로그램을 분석하여 ( 1번 )( 2번 )빈칸에 알맞은 답을 쓰시오.
class Main {
public static void main (String[] args) {
int[]a = new int[8];
int i=0; int n=10;
while ( 1번 ) {
a[i++] = ( 2번 );
n /= 2;
}
for(i=7; i>=0; i--){
System.out.print(a[i]);
}
}
}
✅ 정답
(1번) : n>0
(2번) : n%2
✏️문제 풀이
1. n이 0보다 크면 반복하여 2로 나눈 나머지를 배열에 저장.
2. 배열의 요소를 역순으로 출력하면 n의 2진수 표현.
3.
while 루프
while (n > 0) { // 1번 답: n > 0
a[i++] = n % 2; // 2번 답: n % 2
n /= 2; // n을 2로 나누어 몫을 저장
}
20년 4회
출력 결과는?
class Parent{
public int compute(int num){
if(num <=1) return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends parent {
public int compute(int num){
if(num<=1) return num;
return compute(num-1) + compute(num-3);
}
}
class Main{
public static void main (String[] args){
Parent obj = new Child();
System.out.print(obj.compute(4));
}
}
✅ 정답
1
✏️문제 풀이
Parent
: Fibonacci 수열 계산.Child
: compute(num-3)
을 사용하여 계산.Main
클래스
Parent obj = new Child();
System.out.print(obj.compute(4)); // Child의 compute(4) 호출
compute(4) 계산
21년 1회
출력 결과는?
public class Main{
public static void main(String[] args){
int arr[][] = new int[][]{{45,50,75},{89}};
System.out.println(arr[0].length);
System.out.println(arr[1].length);
System.out.println(arr[0][0]);
System.out.println(arr[0][1]);
System.out.println(arr[1][0]);
}
}
✅ 정답
3
1
45
50
89
✏️문제 풀이
2차원 배열 초기화
int arr[][] = new int[][]{{45, 50, 75}, {89}};
arr
┌───────────────┐
│ {45, 50, 75}│ → arr[0]
├───────────────┤
│ {89} │ → arr[1]
└───────────────┘
21년 1회
출력 결과는?
public class Main {
public static void main(String[] args){
int i, j;
for(j=0, i=0; i<=5; i++){
j+=i;
System.out.print(i);
if(i==5){
System.out.print("=");
System.out.print(j);
} else{
System.out.print("+");
}
}
}
}
✅ 정답
0+1+2+3+4+5=15
✏️문제 풀이
1. 변수 초기화
int i, j;
for(j=0, i=0; i<=5; i++) {
j += i; // i 값을 j에 더함
System.out.print(i); // 현재 i 출력
if(i==5) {
System.out.print("="); // i가 5일 때 '=' 출력
System.out.print(j); // 총합 출력
} else {
System.out.print("+"); // 그 외에는 '+' 출력
}
출력 결과: 0+1+2+3+4+5=15
21년 2회
(가)에 알맞은 예약어를 쓰시오.
public class Main {
public static void main(String[] args){
System.out.print(Main.check(1));
}
(가) String check (int num) {
return (num >= 0) ? "positive" : "negative";
}
}
✅ 정답
static
✏️문제 풀이
21년 2회
출력 결과는?
public class ovr1 {
public static void main(String[] args){
ovr1 a1 = new ovr1();
ovr2 a2 = new ovr2();
System.out.println(a1.sun(3,2) + a2.sun(3,2));
}
int sun(int x, int y){
return x + y;
}
}
class ovr2 extends ovr1 {
int sun(int x, int y){
return x - y + super.sun(x,y);
}
}
✅ 정답
11
✏️문제 풀이
ovr1
클래스의 sun
메서드는 x + y
를 반환.ovr2
클래스는 ovr1
을 상속받고, sun
메서드를 오버라이드하여 x - y + super.sun(x, y)
를 반환.a1.sun(3, 2)
결과는 5이고, a2.sun(3, 2)
결과는 6이므로, 최종 출력은 5 + 6(a1.sun(3,2) + a2.sun(3,2)) = 11.21년 3회😿
출력 결과는?
class Connection {
private static Connection _inst = null;
private int count = 0;
public static Connection get() {
if(_inst == null) {
_inst = new Connection();
return _inst;
}
return _inst;
}
public void count() { count ++; }
public int getCount() { return count; }
}
public class Main {
public static void main(String[] args) {
Connection conn1 = Connection.get();
conn1.count();
Connection conn2 = Connection.get();
conn2.count();
Connection conn3 = Connection.get();
conn3.count();
System.out.print(conn1.getCount());
}
}
✅ 정답
3
✏️문제 풀이
1. Singleton 패턴
Connection
클래스는 오직 하나의 인스턴스만 생성되도록 설계되었습니다.get()
메서드_inst
가 null
이면 새로운 Connection
객체를 생성하고, 그렇지 않으면 이미 생성된 객체를 반환합니다.count()
메서드count
변수를 1 증가시킵니다.실행과정
Connection conn1 = Connection.get(); // 인스턴스 생성 (count: 0 → 1)
conn1.count(); // count: 1 // count: 1 (첫 번째 호출)
Connection conn2 = Connection.get(); // 이미 생성된 인스턴스 반환
conn2.count(); // count: 2 // count: 2 (두 번째 호출)
Connection conn3 = Connection.get(); // 같은 인스턴스 반환
conn3.count(); // count: 3 count: 3 (세 번째 호출)
System.out.print(conn1.getCount()); // 출력: 3
21년 3회
출력 결과는?
public class Main{
public static void main(String[] args) {
int a = 3, b = 4, c = 3, d = 5;
if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)) {
a = b + c;
if(7 == b ^ c != a) {
System.out.println(a);
} else {
System.out.println(b);
}
} else {
a = c + d;
if(7 == c ^ d != a) {
System.out.println(a);
} else {
System.out.println(d);
}
}
}
}
✅ 정답
7
✏️문제 풀이
1. 조건문 해석
if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)) {
2. 최종 결론
a = b + c; // a = 4 + 3 = 7
3. 다음 조건문
if(7 == b ^ c != a) {
22년 1회
출력 결과는?
class A {
int a;
int b;
}
public class Main {
static void func1(A m){
m.a *= 10;
}
static void func2(A m){
m.a += m.b;
}
public static void main(String args[]){
A m = new A();
m.a = 100;
func1(m);
m.b = m.a;
func2(m);
System.out.printf("%d", m.a);
}
}
✅ 정답
2000
✏️문제 풀이
1. 클래스 A
22년 1회
(가)에 들어갈 알맞은 답을 쓰시오.
class Car implements Runnable{
int a;
public void run(){
try{
while(++a<100){
System.out.println("miles traveled :" +a);
Thread.sleep(100);
}
}
catch(Exception E){}
}
}
public class Main{
public static void main(String args[]){
Thread t1 = new Thread(new (가)());
t1.start();
}
}
✅ 정답
(가 ) : Car
c문제 풀이
1. Car 클래스
22년 2회
출력 결과는?
class Main {
public static void main(String args[]) {
int i=3, k=1;
switch(i){
case 1:k+=1;
case 2:k++;
case 3:k=0;
case 4:k+=3;
case 5:k-=10;
default : k--;
}
System.out.print(k);
}
}
✅ 정답
(가 ) : Car
✏️문제 풀이
1. i 3부터 시작
2. k = 0 0 + 3 -10 = -7 - 1 = -8
22년 2회😿
출력 결과는?
class Conv{
public Conv(int a){
this.a=a;
}
int func(){
int b=1;
for(int i =1;i<a;i++){
b=a*i+b;
}
return a+b;
}
}
public class Main {
public static void main(String args[]) {
Conv obj=new Conv(3);
obj.a=5;
int b=obj.func();
System.out.print(obj.a+b);
}
}
✅ 정답
61
✏️문제 풀이
Conv(3)을 통해서 a=3 이 되었지만, 바로 뒤에 obj.a=5 를 통해 a=5.
그래서 메소드 func()를 풀어보면 for( int i=0; i<5 ; i++)는 아래와 같이 계산됨
b= 51 + 1 = 6
b= 52 + 6 = 16
b=53 + 16 = 31
b= 54 + 31 = 51
반복문을 마친후, a+ b 값을 return 하라고 했으니, return값은 56
int b = obj.func() b의 최종 값은 56
obj.a + b = 5+ 56 = 61
22년 2회😿
출력 결과는?
public class Test{
public static void main(String[] args){
int []result = int[5];
int []arr = [77,32,10,99,50];
for(int i = 0; i < 5; i++) {
result[i] = 1;
for(int j = 0; j < 5; j++) {
if(arr[i] <arr[j])
result[i]++;
}
}
for(int k = 0; k < 5; k++) {
printf(result[k]);
}
}
}
✅ 정답
61
✏️문제 풀이
1. 배열 생성
arr = {77, 32, 10, 99, 50}
2. 순위 계산 로직
result 배열을 만들어 각 숫자의 순위를 저장.
3. 순위 계산 방법
22년 2회
출력 결과는?
public class Main {
static int[] MakeArray(){
int[] tempArr = new int[4];
for(int i=0; i<tempArr.Length;i++){
tempArr[i] = i;
}
return tempArr;
}
public static void main(String[] args){
int[] intArr;
intArr = MakeArray();
for(int i=0; i < intArr.Length; i++)
System.out.print(intArr[i]);
}
}
✅ 정답
0123
✏️문제 풀이
1. 배열 생성
22년 3회
출력 결과는?
public class Exam {
public static void main(String[] args){
int a = 0;
for(int i=1; i<999; i++){
if(i%3==0 && i%2!=0)
a = i;
}
System.out.print(a);
}
}
✅ 정답
993
✏️문제 풀이
3의 배수 (i % 3 == 0)
2의 배수가 아님 (i % 2 != 0)
이 두 조건을 모두 만족하는 마지막 숫자가 993이기 때문에 993이 출력됨
23년 1회
출력 결과는?
class Static{
public int a=20;
static int b=0;
}
public class Main {
public static void main(String[] args) {
int a=10;
Static.b=a;
Static st=new Static();
System.out.println(Static.b++);
System.out.println(st.b);
System.out.println(a);
System.out.println(st.a);
}
}
✅ 정답
10
11
10
20
✏️문제 풀이
1. 클래스 Static
3-1. System.out.println(Static.b++);
3-2. System.out.println(st.b);:
3-3.System.out.println(a);
3-4. System.out.println(st.a);
23년 1회
출력 결과는?(20년 3회 기출과 동일)
abstract class Vehicle{
String name;
abstract public String getName(String val);
public String getName(){
return "Vehicle name:" + name;
}
}
class Car extends Vehicle{
private String name;
public Car(String val){
name=super.name=val;
}
public String getName(String val){
return "Car name : " + val;
}
public String getName(byte val[]){
return "Car name : " + val;
}
}
public class Main {
public static void main(String[] args){
Vehicle obj = new Car("Spark");
System.out.print(obj.getName());
}
}
✅ 정답
Vehicle name : Spark
✏️문제 풀이
1. Vehicle 클래스
이때 추상 클래스는
23년 1회
출력 결과는?
class Parent {
int x = 100;
Parent() {
this(500);
}
Parent(int x) {
this.x = x;
}
int getX() {
return x;
}
}
class Child extends Parent {
int x = 1000;
Child() {
this(5000);
}
Child(int x) {
this.x = x;
}
}
public class Main {
public static void main(String[] args) {
Child obj = new Child();
System.out.println(obj.getX());
}
}
✅ 정답
500
✏️문제 풀이
1. Child
객체 생성
Child obj = new Child();
로 Child
클래스의 객체를 생성.Child()
생성자가 호출되고, this(5000);
을 통해 Child(int x)
생성자를 호출.Child(int x)
생성자 실행Child(int x)
에서 this.x = x;
를 통해 Child
클래스의 x
값을 5000
으로 설정.Child
의 x
는 5000
이야.Child
클래스의 생성자가 끝나기 전에, Parent
클래스의 생성자도 호출돼.Parent()
생성자가 호출되고, 여기서 this(500);
를 통해 Parent(int x)
생성자가 호출.Parent(int x)
생성자 실행Parent(int x)
에서 this.x = x;
가 실행되며, 여기서 this
는 Parent
클래스의 변수를 참조, Parent
클래스의 x
가 500
으로 설정.getX()
메서드 호출System.out.println(obj.getX());
에서 getX()
메서드를 호출하면, Parent
클래스의 getX()
가 실행.Parent
클래스의 x
값을 반환하므로 결과적으로 500
이 출력.getX()
는 Child
객체에서 호출되지만, 실제로는 Parent
클래스의 메서드를 실행.Child
객체의 생성 과정에서 부모 클래스의 생성자도 호출되고, 그 결과로 Parent
클래스의 x
값이 설정.23년 2회
출력 결과는?
public class Main {
public static void main(String[] args) {
String str1 = "Programming";
String str2 = "Programming";
String str3 = new String("Programming");
System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str1.equals(str3));
System.out.print(str2.equals(str3));
}
}
✅ 정답
true
false
true
true
✏️문제 풀이
1. str1 == str2
true
str1
과 str2
는 리터럴 문자열로, 자바는 같은 문자열 리터럴을 공유하기 때문에 두 변수는 같은 메모리 주소를 가리킴.str1 == str3
false
str3
는 new String("Programming")
을 사용하여 생성된 객체로, 새로운 메모리 공간에 할당됨. 그래서 str1
과 str3
는 서로 다른 객체를 가리키므로 false
가 출력됨.str1.equals(str3)
true
equals
메서드는 두 객체의 내용이 같은지를 비교함. str1
과 str3
의 내용은 모두 "Programming"
이므로 true
가 출력됨.str2.equals(str3)
true
str2
도 str3
와 내용이 동일하므로, equals
메서드는 true
를 반환함.요약
==
연산자는 객체의 메모리 주소를 비교하고, equals
메서드는 객체의 내용을 비교함23년 3회
출력 결과는?
public class Main {
public static void main(String[] args) {
A b = new B();
b.paint();
b.draw();
}
}
class A {
public void paint() {
System.out.print("A");
draw();
}
public void draw() {
System.out.print("B");
draw();
}
}
class B extends A {
public void paint() {
super.draw();
System.out.print("C");
this.draw();
}
public void draw() {
System.out.print("D");
}
}
✅ 정답
B
D
C
D
D
✏️문제 풀이
1. main 메서드 실행
3.super.draw(); 실행
System.out.print("C"); 실행
C가 출력됨.
this.draw(); 실행
요약
B (부모의 draw() 호출)
D (자식의 draw() 호출)
C (B의 paint()에서)
D (B의 paint()에서 this.draw() 호출)
D (마지막으로 b.draw() 호출)
23년 3회
다음 코드에서 오류가 발생하는 코드 라인수를 적으시오.
class Person {
private String name;
public Person(String val) {
name = val;
}
public static String get() {
return name;
}
public void print() {
System.out.println(name);
}
}
public class Main {
public static void main(String[] args) {
Person obj = new Person("Kim");
obj.print();
}
}
✅ 정답
7
✏️문제 풀이
오류 원인
get() 메서드는 static 메서드로 정의되어 있어. static 메서드는 클래스의 인스턴스(객체)와 관련이 없기 때문에 인스턴스 변수인 name에 직접 접근할 수 없음.
name은 Person 클래스의 인스턴스 변수이므로, static 메서드에서는 사용할 수 없기 때문에 static 메서드에서 name을 참조하는 부분에서 오류가 발생함.
오류 발생 부분
public static String get() {
return name;
}
// static을 제거하여 인스턴스 메서드로 변경
public String get() {
return name;
}
23년 3회
출력 결과는?(20년 4회 19번과 문제 동일)
class Parent {
int compute(int num) {
if(num <= 1)
return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends Parent {
int compute(int num) {
if(num <= 1)
return num;
return compute(num-1) + compute(num-3);
}
}
public class Main {
public static void main(String args[]) {
Parent obj = new Child();
System.out.print(obj.compute(7));
}
}
✅ 정답
2
✏️문제 풀이
1. 클래스 구조
24년 1회
출력 결과는?(20년 4회 19번과 문제 동일)
class Connection {
private static Connection _inst = null;
private int count = 0;
static public Connection get() {
if(_inst == null) {
_inst = new Connection();
return _inst;
}
return _inst;
}
public void count() {
count++;
}
public int getCount() {
return count;
}
}
public class main {
public static void main(String[] args) {
Connection conn1 = Connection.get();
conn1.count();
Connection conn2 = Connection.get();
conn2.count();
Connection conn3 = Connection.get();
conn3.count();
conn1.count();
System.out.print(conn1.getCount());
}
}
✅ 정답
2
✏️문제 풀이
24년 1회
실행순서를 나열 하시오.
class Parent {
int x, y;
Parent(int x, int y) { (가)
this.x=x;
this y=y;
}
int getT() { (나)
return x*y;
}
}
class Child extend Parent {
int x;
Child (int x) { (다)
super(x+1, x);
this.x=x;
}
int getT(int n){ (라)
return super.getT()+n;
}
}
class Main {
public static void main(String[] args) { (마)
Parent parent = new Child(3); (바)
System.out.println(parent.getT()); (사)
}
}
✅ 정답
바->다->가->사->나
✏️문제 풀이
24년 1회
출력 결과는?
class classOne {
int a, b;
public classOne(int a, int b) {
this.a = a;
this.b = b;
}
public void print() {
System.out.println(a + b);
}
}
class classTwo extends classOne {
int po = 3;
public classTwo(int i) {
super(i, i+1);
}
public void print() {
System.out.println(po*po);
}
}
public class main {
public static void main(String[] args) {
classOne one = new classTwo(10);
one.print();
}
}
✅ 정답
9
✏️문제 풀이
1. 클래스 구조
객체 생성
메서드 호출
System.out.println(po * po);
가 실행됨.24년 2회
출력 결과는?
class Main {
public static void main(String[] args) {
int[] a = new int[]{1, 2, 3, 4};
int[] b = new int[]{1, 2, 3, 4};
int[] c = new int[]{1, 2, 3};
check(a, b);
check(a, c);
check(b, c);
}
public static void check(int[] a, int[] b) {
if (a==b) {
System.out.print("O");
}else{
System.out.print("N");
}
}
}
✅ 정답
NNN
✏️문제 풀이
24년 2회
출력 결과는?
class Main {
public static void main(String[] args) {
int[] a = new int[]{1, 2, 3, 4};
int[] b = new int[]{1, 2, 3, 4};
int[] c = new int[]{1, 2, 3};
check(a, b);
check(a, c);
check(b, c);
}
public static void check(int[] a, int[] b) {
if (a==b) {
System.out.print("O");
}else{
System.out.print("N");
}
}
}
✅ 정답
NNN
✏️문제 풀이
24년 2회
출력 결과는?
class Main {
public static void main(String[] args) {
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
ODDNumber OE = new ODDNumber();
System.out.print(OE.sum(a, true) + ", " + OE.sum(a, false));
}
}
interface Number {
int sum(int[] a, boolean odd);
}
class ODDNumber implements Number {
public int sum(int[] a, boolean odd) {
int result = 0;
for(int i=0; i < a.length; i++){
if((odd && a[i] % 2 != 0) || (!odd && a[i] % 2 == 0))
result += a[i];
}
return result;
}
}
✅ 정답
25,20
✏️문제 풀이
1. 배열 생성
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
a
에는 1부터 9까지의 숫자가 있음.홀수의 합
OE.sum(a, true)
호출odd
가 true
이므로 홀수를 더함.1, 3, 5, 7, 9
→ 합계: 25
짝수의 합
OE.sum(a, false)
호출odd
가 false
이므로 짝수를 더함.2, 4, 6, 8
→ 합계: 20
조건문 설명
odd
값에 따라 홀수 또는 짝수를 선택적으로 더함.true
일 때는 홀수, false
일 때는 짝수를 더함.결과 출력
System.out.print(OE.sum(a, true) + ", " + OE.sum(a, false));
에서"25, 20"
이 됨.24년 2회😿😿
출력 결과는?
class Main {
public static void main(String[] args) {
String str = "abacabcd";
boolean[] seen = new boolean[256];
System.out.print(calculFn(str, str.length()-1, seen));
}
public static String calculFn(String str, int index, boolean[] seen) {
if(index < 0) return "";
char c = str.charAt(index);
String result = calculFn(str, index-1, seen);
if(!seen[c]) {
seen[c] = true;
return c + result;
}
return result;
}
}
✅ 정답
bcba
✏️문제 풀이
문자열 생성
String str = "abacabcd";
boolean 배열
boolean[] seen = new boolean[256];
재귀 함수 호출
calculFn(str, str.length()-1, seen)
로 마지막 문자부터 처리 시작.재귀 함수의 동작
c
를 가져옴.seen
배열에 기록.결과
"dcba"
가 됨.24년 2회😿
출력 결과는?
class Main {
public static void main(String[] args) {
String str = "ITISTESTSTRING";
String[] result = str.split("T");
System.out.print(result[3]);
}
}
✅ 정답
S
✏️문제 풀이
String[] result = str.split("T");
split("T")는 문자열을 'T'로 나누어 배열로 만듬.
System.out.print(result[3]);