2차원배열
배열의 배열
자바는 1차원배열을 이용해 2차원배열을 구현한다.
package chap05;
import java.util.Arrays;
/*
* 2차원배열은 1차원배열의 참조변수의 배열 .(배열의 배열)
*/
public class ArrayEx07 {
public static void main(String[] args) {
int[][] arr = new int[2][3];
//2행3열짜리 배열
arr[0][0] = 10;
arr[0][1] = 20;
arr[0][2] = 30;
arr[1][0] = 40;
arr[1][1] = 50;
arr[1][2] = 60;
System.out.println("arr참조값:"+arr);
System.out.println("arr[0]참조값:"+arr[0]);
System.out.println("arr[1]참조값:"+arr[1]);
System.out.println("arr.length :"+arr.length);
System.out.println("arr[0].length : "+arr[0].length);
System.out.println("arr[1].length :"+arr[1].length+"\n");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print("arr["+i+"]["+j+"]="+arr[i][j]+" ");
}System.out.println();
}
}
}
arr참조값:[[I@28a418fc
arr[0]참조값:[I@1be6f5c3
arr[1]참조값:[I@6b884d57
arr.length :2
arr[0].length : 3
arr[1].length :3
arr[0][0]=10 arr[0][1]=20 arr[0][2]=30
arr[1][0]=40 arr[1][1]=50 arr[1][2]=60
arr.length는 행의 갯수임을 알 수 있다.
각 행마다 참조값이 다른것도 확인
for (int[] is : arr) {
String string = Arrays.toString(is);
System.out.println(string);
}
System.out.println("1차원 배열의 객체변경");
int[] arr1 = {1,2,3,4,5};
arr[1] = arr1;
for (int[] is : arr) {
String string = Arrays.toString(is);
System.out.println(string);
}
[10, 20, 30]
[40, 50, 60]
1차원 배열의 객체변경
[10, 20, 30]
[1, 2, 3, 4, 5]
//arr[0].length ==3
// arr[1].length==5
arr[1]이 참조하고있던주소가 arr1 로 바뀜
arrp[1]이 원래 참조하고있던 인스턴스[40,50,60]은
이제 GC에 의해 삭제됨
행 , 열의 합 구하기 예제
(2차원배열)
package chap05.exam;
import java.util.Arrays;
/*
* 2차원배열 행의합과 열의 합을 출력
*/
public class Exam5 {
public static void main(String[] args) {
int[][] arr = new int[3][2];
arr[0][0] = 10;arr[0][1] = 20;
arr[1][0] = 30;arr[1][1] = 40;
arr[2][0] = 50;arr[2][1] = 60;
arr[1] = new int[] {100,200,300};
for (int[] is : arr) {
System.out.println(Arrays.toString(is));
}
for (int i = 0; i < arr.length; i++) {
int sum1=0;
for (int j = 0; j <arr[i].length; j++) {
sum1+=arr[i][j];
}System.out.println(i+"행의 합 "+sum1);
}
System.out.println("열의합 =====");
int maxlen = 0;
//열의 최댓값추출
for (int i = 0; i < arr.length; i++) {
if(maxlen < arr[i].length) {
maxlen = arr[i].length;
}
}
//여기서는 maxlen이 3이므로 크기 3의 배열이만들어짐
int col[] =new int[maxlen];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <arr[i].length; j++) {
col[j]+=arr[i][j];
//col[0] = arr[0][0] + arr[1][0] + arr[2][0]
//col[1] = arr[0][1] + arr[1][1] + arr[2][1]
//col[2] = arr[1][2]
}
}
for (int i = 0; i < col.length; i++) {
System.out.println(i+"열의 합 : "+col[i]);
}
}
}
[10, 20]
[100, 200, 300]
[50, 60]
0행의 합 30
1행의 합 600
2행의 합 110
열의합 =====
0열의 합 : 160
1열의 합 : 280
2열의 합 : 300
가변 배열 (2차원)
package chap05;
/*
* 가변배열 : 다차원배열에서만 가능
* 첫번째 배열의 갯수만 설정하고 나머지값을 설정X
*/
public class ArrayEx9 {
public static void main(String[] args) {
int arr[][] = new int[3][]; //가변배열 (3행짜리 배열)(열은 알아서)
arr[0] = new int[] {10,20};
arr[1] = new int[] {30,40,50};
arr[2] = new int[] {60};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print("arr["+i+"]["+j+"]="+arr[i][j]);
if(j!=arr[i].length-1) {System.out.print(", ");}
}System.out.println();
}
}
}
arr[0][0]=10, arr[0][1]=20
arr[1][0]=30, arr[1][1]=40, arr[1][2]=50
arr[2][0]=60
예제문제( 가변배열 이용)
여기서알아야할것
빈 배열은 0 으로채워져있다
package chap05.exam;
import java.util.Arrays;
import java.util.Scanner;
/*
* 배열의행의값을 입력받아 0으로초기화된 배열 출력
*
* [결과]
* 배열의행을 입력 : 3
* 0
* 00
* 000
*/
public class Exam06 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("배열의행을 입력 : ");
int hang = scan.nextInt();
int[][] arr = new int[hang][];
for (int i = 0; i < arr.length; i++) {
arr[i] = new int[i+1];
//arr[0] = new int[1]
//arr[1] = new int[2] ........
//만들기만 한다면 0값이 들어가게됨
}
for (int[] cs : arr) {
System.out.println(Arrays.toString(cs));
}
}
}
배열의행을 입력 : 5
[0]
[0, 0]
[0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0, 0]
저 위에
arr[i] = new int[i+1];
(( arr[0] = new int[1] , arr[1] = new int[2] ))은
가변배열에서만 사용하는 구문인데
i번쨰 행의 열의 길이를 지정해주는것임.
이 알고리즘을 응용해서
0으로 초기화된 배열이아닌
하나씩 증가하는 배열을 만들어봄
package chap05.exam;
import java.util.Arrays;
import java.util.Scanner;
public class Exam7 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("배열의행을 입력 : ");
int hang = scan.nextInt();
int[][] arr = new int[hang][];
int sum=0;
for (int i = 0; i < arr.length; i++) {
arr[i] = new int[i+1];
for (int j = 0; j < i+1; j++) {
arr[i][j] = ++sum;
}
}
for (int[] cs : arr) {
for(int a : cs) {
System.out.printf("%3d",a);
}System.out.println();
}
}
}
가변배열을 이용한 예제
딱보니 10행10열이었고 숫자10을 입력받은 후
1부터10까지의 더한값부터 1까지
내려가는 알고리즘이었다.
높이를 입력받아 만들어보았다.
package chap05.exam;
import java.util.Scanner;
public class Exam08 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("높이를 입력하세요 : ");
int hang = scan.nextInt();
int sum=0;
//1. 가변배열생성
int[][] a = new int[hang][];
for (int c = 1; c <= hang; c++) {
sum+=c;
}
//2 각 행의 1차원 배열의 객체생성
for (int i = 0; i < a.length; i++) {
a[i] = new int[i+1];
for (int j = 0; j < i+1; j++) {
//3.arr배열에 숫자 넣기
a[i][j] = sum--;
}
}
for (int[] is : a) {
for(int b : is) {
System.out.printf("%4d",b);
}System.out.println();
}
}
}
for (int i = 0; i < a.length; i++) {
a[i] = new int[i+1];
//i행의 열 갯수를 지정해준다.(행이 높아질수록 열도 많아지게끔)
for (int j = 0; j < i+1; j++) {
a[i][j] = sum--;
}
}
이쪽부분이 중요하다
행의 크기는 입력으로 받아 놓은 후
a.length(배열의 행 갯수) 만큼 반복문을 설정하고
i 행에 i+1 크기의 배열객체생성
( a[i] = new int[i+1]; )
( j 번 : 0 <= j < i+1 까지 반복)
그리고 i행j번에 sum을 넣은 후 감소시켜주면 된다.
하나의 예를 들겠다
2행에 넣는다고 치면
1. a[2] = new int[3] 3개의열이생김
2. a[2][0] , a[2][1] , a[2][2] 총 3개의 값을 넣음
a[0][0]
a[1][0] a[1][1]
a[2][0] a[2][1] a[2][2]
....................................................
과같은 모습이 나타남
향상된 for문을 이용해 각 배열의 요소 모두출력
배열의 복사
1. for문을 이용해 새로운배열에 요소 하나하나를 복사
2.System.arraycopy();
3.Arrays.copyOf() 함수
4. 얕은 복사
package chap05;
import java.util.Arrays;
/*
* 배열의크기변경
*새로운 배열 객체 생성해 배열 요소값을 복사
* 1. for구문을 이용 요소 하나하나를 복사
* 2. System.arratcopy()함수 이용
*/
public class ArrayEx10 {
public static void main(String[] args) {
int [] arr1 = {10,20,30};
//arr1 배열보다 더 큰 배열을 생성해
//arr1의 배열값저장 후 합계를 마지막요소에저장
//arr1.length = 4 ; 크기변경은 불가능
int [] arr2 = new int[arr1.length+1];
System.out.println("1.for문을 이용해 복사");
//for문으로 배열값 복사하기
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
arr2[arr1.length] += arr1[i];}
for(int a : arr2) {
System.out.print(a);
if(a!=arr2[arr1.length]) {
System.out.print(",");}
}System.out.println();
//2 System.arraycopy()함수 이용
System.out.println("\nSystem.arraycopy()함수");
int[] arr3 = new int[10];
System.arraycopy(arr2, 0, arr3, 2, arr2.length);
//arr2의 0번부터의 값을
//arr3의 2번인덱스~arr2.length까지 넣는다
//arraycopy(원본배열, 원본배열의시작index , 복사배열 ,복사배열의시작index , 요소의 갯수)
for (int i : arr3) {
System.out.print(i+",");
}System.out.println();
//3.Arrays.copyOf() 함수이용
System.out.println("\nArrays.copyOf() 함수");
int[] arr4 = Arrays.copyOf(arr3, 5);
for (int i : arr4) {
System.out.print(i);
if(i!=arr4[arr4.length-1]) {
System.out.print(",");
}
}System.out.println();
System.out.println("\n얕은복사"); //객체 자체가복사됨
int[] arr5 = arr4;
for (int i : arr5) {
System.out.print(i);
if(i!=arr5[arr5.length-1]) {
System.out.print(",");
}
}
System.out.println("arr1 : ");
for (int i : arr1) {
System.out.print(i);
if(i!=arr1[arr1.length-1]) {
System.out.print(",");
}
}System.out.println();
System.out.print("arr2 : ");
for (int i : arr2) {
System.out.print(i);
if(i!=arr2[arr2.length-1]) {
System.out.print(",");
}
}System.out.println();
System.out.print("arr3 : ");
for (int i : arr3) {
System.out.print(i+",");
}System.out.println();
System.out.print("arr4 : ");
for (int i : arr4) {
System.out.print(i+",");
}System.out.println();
System.out.print("arr5 : ");
for (int i : arr5) {
System.out.print(i);
if(i!=arr5[arr5.length-1]) {
System.out.print(",");
}
}System.out.println();
}
}
1.for문을 이용해 복사
10,20,30,60
System.arraycopy()함수
0,0,10,20,30,60,0,0,0,0,
Arrays.copyOf() 함수
0,0,10,20,30
얕은복사
0,0,10,20,30
arr1 : 10,20,30
arr2 : 10,20,30,60
arr3 : 0,0,10,20,30,60,0,0,0,0,
arr4 : 0,0,10,20,30
arr5 : 0,0,10,20,30
배열문제
1. 참조 타입에 대한 설명으로 틀린 것은 무엇입니까?
- 참조 타입에는 배열 , 열거 , 클래스 , 인터페이스가 있다.
- 참조 타입 변수의 메모리 생성 위치는 스택이다.
- 참조 타입에서 ==,!= 연산자는 객체 번지를 비교한다.
- 참조 타입은 null 값으로 초기화할 수 없다.X
2. 자바에서 메모리 사용에 대한 설명으로 틀린 것은 무엇입니까?
- 로컬 변수는 스택 영역에 생성되며 실행 블록이 끝나면 소멸된다.
- 메소드 코드 , 상수 , 열거 상수는 정적(메소드) 영역에 생성된다.
- 참조되지 않는 객체는 프로그램에서 직접 소멸 코드를 작성하는 것이 좋다. X
- 배열 및 객체는 힙 영역에 생성된다.
3. String 타입에 대한 설명으로 틀린 것은 무엇입니까?
- String은 클래스이므로 참조 타입이다.
- String 타입의 문자열 비교는 == 를 사용해야 한다. O
- 동일한 문자열 리터럴을 저장하는 변수는 동일한 String 객체를 참조한다
- new String ("문자열")은 문자열이 동일하더라도 다른 String 객체를 생성한다.
4. 배열을 생성하는 방법으로 틀린 것은 무엇입니까?
- int[]array = {1,2,3};
- int[]array; araay = {1,2,3}; o
- int[]array = new int[3];
- int[][]array = new int[3][2];
5. 배열의 기본 초기값에 대한 설명으로 틀린 것은 무엇입니까?
- 정수 타입 배열 항목의 기본 초기값은 0 이다.
- 실수 타입 배열 항목의 기본 초기값은 0.0f 또는 0.0 이다.
- boolean 타입 배열 항목의 기본 초기값은 true 이다. o
- 참조 타입 배열 항목의 기본 초기값은 null 이다.
6. 배열의 길이에 대한 문제입니다. array.length 의 값과 array[2].length 의 값은 얼마입니까?
int[][] array = {
{95,86},
{83,92,96},
{78,83,93,87,88}
};
array.length -> 3
array[2].length -> 5
클래스
객체지향언어
특징 :
코드재사용성높음
코드의관리가용이(유지보수 용이)
클래스 ( 사용자 정의 자료형)
추상화 - 클래스생성과정
명사 | 필드 |
기능 | 메서드 |
상속 - 재사용 (extends)
캡슐화 - 접근제어자
public (모든곳에서접근가능)
defalut (같은 패키지 내에서만 접근)
protected( 같은패키지내에서만 접근
(상속관계인경우에는 다른패키지가능))
, private : 같은클래스만 접근 가능
다형성 : 참조 변수의 형변환
클래스의 구조와 정의
실행
java phoneEx1
1) JVM환경설정
2) 힙영역에 p1 객체생성
3) p1객체가 color ,power , no 등의 정보를가짐
p1(주소 x001)
color (검정) |
power (t) |
no (010-xxx) |
메서드 (power,send , recevice) |
4)p2 객체도 동일하게 힙영역에서 생성
p2 (주소x002)
color (파랑) |
power (true) |
no (010-xx) |
메서드 (power,send , recevice) |
package chap06;
/*
* 클래스 예제
*
* 클래스 : 사용자정의자료형
* 속성 ㅣ 멤버변수 , 필드
* 기능 : 멤버 메서드 , 멤버함수
*/
class phone {
String color; //색상, 멤버변수 , 필드
boolean power;//전원
String no; //번호
//멤버 메서드
void power() {//전원켜기
power = !power;
}
void send(String no) {
System.out.println(no+"로 전화거는중");
}
void recevie(String no) {
System.out.println(no+"에서 전화받는 중");
}
}
//구동클래스 : main메서드를 포함한 public클래스
public class PhoneEx1 {
public static void main(String[] args) {
phone p1 = new phone();
//객체화(인스턴스화)--> 메모리할당.객체생성
/*
* new : 객체화 기능
* 1. 힙영역에 메모리할당 (객체생성)
* 2.멤버변수(필드)를 기본값으로 초기화
* 3.생성자호출
*/
p1.color = "검정";
p1.power = true;
p1.no = "010-1234-7892";
System.out.println(p1.color+", "+p1.power+", "+p1.no);
phone p2 = new phone();
p2.color = "파랑";
p2.power = true;
p2.no = "010-4321-7792";
System.out.println(p2.color+", "+p2.power+", "+p2.no);
p1.send(p2.no);
p2.recevie(p1.no);
System.out.println("p1의 주소값을 p2가 사용");
System.out.println("p2 = p1 ");
p2=p1;
System.out.println(p1.color+", "+p1.power+", "+p1.no);
System.out.println(p2.color+", "+p2.power+", "+p2.no);
System.out.println("p1.color change");
p1.color = "빨강빨강";
//p1의 객체의 필드가 변경되면
//같은 객체주소를 참조하고있는 p2 도 바뀌게 됨.
System.out.println(p1.color+", "+p1.power+", "+p1.no);
System.out.println(p2.color+", "+p2.power+", "+p2.no);
}
}
검정, true, 010-1234-7892
파랑, true, 010-4321-7792
010-4321-7792로 전화거는중
010-1234-7892에서 전화받는 중
p1의 주소값을 p2가 사용
p2 = p1
검정, true, 010-1234-7892
검정, true, 010-1234-7892
p1.color change
빨강빨강, true, 010-1234-7892
빨강빨강, true, 010-1234-7892
클래스 예제
public class Exam01 {
public static void main(String[] args) {
Rectangle r1 = new Rectangle();
r1.width = 10;
r1.height = 5;
r1.area();// 사각형 면적 : 50
r1.length(); //사각형둘레 300
}
}
Rectangle 클래스를 완성하시오
(나중에 알겠지만 필드에 직접접근하는 건 좋지않음
필드는 private으로 접근을 막고 생성자를 통해 한번만 접근 하게 하자)
class Rectangle {
int width;
int height;
public void area() {
System.out.println("면적 : "+(width*height));
}
public void length() {
System.out.println("둘레 : "+2*(width+height));
}
}
오늘의 마무리 예제
문제는 이거를 다운해서 보면 된다
주요문제 딱 2개만풀어보겠다
/*
command line에서 숫자로 이루어진 문자를 두개 받아서 두수의 공약수를 구하시오
int num1 = Integer.parseInt(args[0])
[결과]
10과 20 의 공약수 : 1,2,5,10,
*/
클래스 실행 후
우클릭 +run + runConfiguration 을 누르면 이화면이나온다
package chap05.test2;
public class Test2 {
public static void main(String[] args) {
int int1 = Integer.parseInt(args[0]);
int int2 = Integer.parseInt(args[1]);
for (int i = 0; i < args.length; i++) {
System.out.println("args["+i+"] : "+args[i]);
}
//args 입력 할떄 space를 누르지않는다면 배열의요소가 하나가됨 args.length == 1
//띄어쓰기로 요소를 분리해서 저장하자
int i=0;
System.out.println(int1+"와"+int2+"의 공약수 : ");
while(true) {
++i;
if(int1%i==0 && int2%i==0) {
System.out.print(i+",");
}
if(i>int1 || i>int2) {
break;
} //i(반복수가) 둘중 하나의값이라도 넘으면 break;
}
}
}
args[0] : 10
args[1] : 20
10와20의 공약수 :
1,2,5,10,
주의점은 args는 스페이스바를 누르지않고 요소를 입력해버리면
args[0] 에 모든문자가 들어가버리므로
space바로 분리해서 2개의요소가 만들어지게끔 하자
문제2
package chap05.test2;
import java.util.Arrays;
public class Test3 {
public static void main(String[] args) {
int[][] score = {
{90,80,70},
{95,85,75},
{70,80,75},
{75,70,85},
{70,75,80}
};
int[][] result = new int[score.length+1][score[0].length+1];
int j=0;
int a = score.length;
int b= score[0].length;
for (int i = 0; i < a; i++) {
for (j = 0; j < b; j++) {
result[i][j] = score[i][j];
result[i][score[i].length] += score[i][j];
result[score.length][j] += score[i][j];
}
result[a][b] += result[i][b];
}
for (int[] is : result) {
System.out.println(Arrays.toString(is));
}System.out.println();
}
}
[90, 80, 70, 240]
[95, 85, 75, 255]
[70, 80, 75, 225]
[75, 70, 85, 230]
[70, 75, 80, 225]
[400, 390, 385, 1175]
앞에서배웟던 Arrays.copyOf 등을 사용하려했지만
생각보다 어려워서
다음과같이 행 , 열이 1씩 큰 배열을 하나만들고
다음과같이 원본 배열만큼의 이중for문을 만든 후
각 행을 그대로 result에 복사 함과 동시에
각 행의 모든합을 더해 result[i][score[i].length] 에 넣어주었고
각 열의 합도
result [ score.length] [ j ] += score [ i ] [ j ] 에 쌓아두었다
// result [ 5 ] [0 ] += score [ 0 ] [0] ....result[5][3] += score [ 0 ] [ 3 ]
/ result [ 5 ] [0 ] += score [ 1] [1] ....result[5][3] += score [ 1 ] [ 3 ]
으로 열의 합을 쌓는방식!!!!
마지막으로 result[score.length][score[0].length] 가 비어있을거다
여기에는 result [ i ] [ score[0].length] 를 채워주면 됨
문제3
package chap05.test2;
import java.util.Arrays;
public class Test5_1 {
public static void main(String[] args) {
int size=11;
String[][] a = new String[size][size];
int b=0;
int c=(a.length-1);
//String 배열의 초기화는 필수임
//초기화안할시 다 null값이므로 다른것을 찍을 수 없게됨
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[0].length; j++) {
a[i][j] = " ";
}
}
for (int i = 0; i <= a.length; i++) {
for (int j = 0; j < a[0].length; j++) {
if(j==b || j==c) {
a[i][j] = "X";
}
}b++;c--;
}
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[0].length; j++) {
System.out.print(a[i][j]+" ");
}System.out.println();
}
}
}
여기서처음에 많이 헤맸다.
String 배열은 처음에 꼭 초기화를 해줘야한다.
아니면 다 null값으로 들어가서 빈칸이 나오지않는다
초기화 후
int b=0;
int c=(a.length-1);
for (int i = 0; i <= a.length/2; i++) {
for (int j = 0; j < a[0].length; j++) {
if(j==b || j==c) {
a[i][j] = "X";
}
}b++;c--;
}
저 X표시의 법칙을 보니까 하나는 0부터 올라가고 두번째꺼는 10(length-1)부터 내려가면서 찍히는 방식이었다.
b++ c-- 를해 숫자증감 효과를 둠
b: 0 1 2 3 4 5 6 7 8 9 10
c: 10 9 8 7 6 5 4 3 2 1 0
int b=0;
int c=10;
for (int i = 0; i <= a.length; i++) {
for (int j = 0; j < a[0].length; j++) {
if(j==b || j==c) {
a[i][j] = "X";
}
}b++;c--;
}
그 다음 length/2+1 부터 루프를 돌렸고
똑같은 방식이지만
b++ ,c-- 로변경
이러게 한 후
중첩for문으로 각 요소들을 모두 뽑아봄
이문제도있는데 이거는 위에 설명을 잘 들었으면 바로 이해할거라서
대충 설명 하겠다
package chap05.test2;
public class Test6 {
public static void main(String[] args) {
int size=11;
String[][] a = new String[size][size];
//String 배열의 초기화는 필수임
//초기화안할시 다 null값이므로 다른것을 찍을 수 없게됨
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[0].length; j++) {
if(i%2==0&&j%2==0) {
a[i][j] = "□";
}
else {
a[i][j] = "■";
}
}
}
for (int i = 0; i < a.length; i++) {
a[i][i] = "X";
a[i][a.length-1-i] = "X";
}
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[0].length; j++) {
System.out.print(a[i][j]+" ");
}System.out.println();
}
}
}
위에 꺼와 바뀐 X 표시 찍는방법
for (int i = 0; i < a.length; i++) {
a[i][i] = "X";
a[i][a.length-1-i] = "X";
}
이 x 표를 찍는 방법이 바뀌었는데
위에 처럼하거나
이렇게 해도 같은 방법이다.
a[0][0] a[0][10]
a[1][1] a[1][9] ......
a[8][8] a[8][2]
a[9][9] a[9][1]
a[10][10] a[10][0]
에 X 가찍히는 것
https://github.com/donggonyoo/javaStudyGudee/tree/main/chap05/src/chap05/test2
javaStudyGudee/chap05/src/chap05/test2 at main · donggonyoo/javaStudyGudee
Contribute to donggonyoo/javaStudyGudee development by creating an account on GitHub.
github.com
내풀이는 여기 있다!
'부트캠프(Java)' 카테고리의 다른 글
자바/스프링 개발 부트캠프 7일차 (생성자 , 상속) (1) | 2025.02.10 |
---|---|
자바/스프링 개발 부트캠프 6일차(클래스) (1) | 2025.02.07 |
자바/스프링 개발 부트캠프 4일차 (배열) (0) | 2025.02.05 |
자바/스프링 개발 부트캠프 3일차( 형변환과 반복문) (2) | 2025.02.04 |
자바/스프링 개발 부트캠프 2일차( 형변환과 연산자) (1) | 2025.02.03 |