본문 바로가기

[K-Digital] 온·오프 연계 AI활용 지능형 서비스 개발

멀티캠퍼스 AI 온라인 강의 숙제 04번째

728x90
반응형

이번 4번째 강의에서는 3번째에서 배웠던 반복문과 배열에서 조금 더 심화 과정을 거치고, 역시 내 예상대로 private 같은 보안에 대해서 배웠다. 그리고 역시 내 예상대로 상당히 복잡했다. 보안 사항은 책으로 직접 나아간건 아니고 강사님의 설명으로 이루어졋다.

 

 

* 다차원 배열

package sec06.exam05_array_in_array;

public class ArrayInArrayExample {
	public static void main(String[] args) {	
		
		int[][] mathScores = new int[2][3];
		for(int i=0; i<mathScores.length; i++) {
			for(int k=0; k<mathScores[i].length; k++) {
				System.out.println("mathScores["+i+"]["+k+"]="
						+mathScores[i][k]);
			}
		}
		System.out.println();
		
		int[][] englishScores = new int[2][];
		englishScores[0] = new int[2];
		englishScores[1] = new int[3];
		for(int i=0; i<englishScores.length; i++) {
			for(int k=0; k<englishScores[i].length; k++) {
				System.out.println("englishScores["+i+"]["+k+"]=" + englishScores[i][k]);
			}
		}
		System.out.println();		
		
		int[][] javaScores = { {95, 80}, {92, 96, 80} };
		for(int i=0; i<javaScores.length; i++) {
			for(int k=0; k<javaScores[i].length; k++) {
				System.out.println("javaScores["+i+"]["+k+"]="
						+javaScores[i][k]);
			}
		}
	} 
}

1차원 배열과는 달리 행과 열로서 구성된 배열을 2차원 배열이라고 한다. 2차원 배열은 수학의 행렬을 떠올리면 되는데, 가로 인덱스와 세로 인덱스를 사용한다. 자바는 2차원 배열을 중첩 배열 방식으로 구현한다.

 

* 배열 복사 & 향상된 for문.

package sec06.exam07_array_copy;


public class ArrayCopyExample {
	public static void main(String[] args) {
		String[] oldStrArray = { "java", "array", "copy" };
		String[] newStrArray = new String[5];
		
		System.arraycopy( oldStrArray, 0, newStrArray, 0, oldStrArray.length);
		
		for(int i=0; i<newStrArray.length; i++) {
			System.out.print(newStrArray[i] + ", ");
		}
	}
}
package sec06.exam08_advanced_for;
public class AdvancedForExample {
	public static void main(String[] args) {
		int[] scores = { 95, 71, 84, 93, 87 };
		
		int sum = 0;
		for (int score : scores) {
			sum = sum + score;
		}
		System.out.println("점수 총합 = " + sum);
		
		double avg = (double) sum / scores.length;
		System.out.println("점수 평균 = " + avg);

	} 
}

ㅇ 2 

 

이 2개는 처음보는거고, 그래서 신기해서 정리했다. 전공자라는 사람이 처음본다고하면 안될것 같지만, 이게 현실이다. 나는 아는게 없어요. 엌ㅋ 나 공부 못했어 ㅋ

아 아니다 배열 복사는 생각해보니까 공부 했었다. 얼추 기억남. 근데 진화된 for문은 진짜 처음 보네.

이름 그대로 배열을 복사하는 기능과, for문의 진화형이라는것이다.

 

system.arraycopy() 메소드를 활용하는건데, 이 코드의 식을 써보자면 

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

src는 1번째 배열, srcPos는 복사하려는 1번째 배열의 시작 부분(근데 그냥 0 말고 안된다.), dest는 배열2. destPos는 복사되는 배열2의 시작 부분, length는 복사하려는 배열1 값들의 범위 지정이다. ' .leng '는 전부 다 한다는 소리고, 숫자로 알아서 값을 지정해주면 지정된 만큼의 범위만 복사한다.

 

 향상된 for문이라는건 그냥 배열 전용 for문이다. 어쩐지 왜 처음보나했더니, 그냥 전용 수식이여서 그런거였다. 변수와 증감식도 사용하지 않는다고 한다. 그냥 무조건 for문에서 i=0l i<=(배열 범위 끝까지); i++ 이것으로만 하는 수식이라고 보면 된다. '무조건'. 아마 큰 쓸모는 없을듯.

 

 

* 접근 제한

접근 제한자들은 일단 이번에는 책 그대로 찍어서 올리는 것으로 대체한다.

라고 해놓고 그냥 이게 처음이자 마지막일 수도 있다. 엌ㅋ

 

 



 

 

그리고 저저번 글에서 말했던 자바 이클립스 오류를 고치는 방법을 알아내었다.

그냥 여기 나온 경고문대로, 이클립스 폴더 내에 jre~~~폴더랑 그 파일들이 없다고 뜨길래, 설치하고 현재 사용중인 java 8버전의 jre 폴더를 통째로 복사해서 이클립스에다가 붙혀 넣었다.

그랬더니 문제없이 실행되더라.

언제부터 이클립스가 이런게 필요한거였는지는 모르겠는데, 여하튼 그러하다.

하여간 자바는 구문도 엄청 길어서 복잡하고 설치법부터도 복잡하고, 그냥 망했으면 좋겠다.

난 개인적으로 그냥 평범한 C언어가 가장 쉬운것 같은데, 이 말 할 때마다 진짜 업계 사람들은 듣고 의아해하더라. SAFFY 면접 볼 때도 이 말 했더니 면접관이 비웃으면서 엄청난 재능이 있다며 비꼬았다. 좀 더 정확하게 '그냥 단순 구문 작성기법이 나에겐 잘 맞는것 같다' 라고 말했어야 했나? 

아무래도 역시 그랬어야했나보다. 아무래도 다들 '프로그램 전체를 코딩하는 것'을 생각한듯. 난 그냥 단순 기법만 말한거였다.

system.out.println();이랑 그냥 printf()랑 둘 중 누가 더 짧고 좋은가.

Scanner scan = new Scanner(System.in); message = scan.nextLine(); 이랑 그냥 scanf()랑 둘 중 누가 더 짧고 좋은가.

나중에 취업 면접 볼 때는 말을 똑바로 하도록 하자.

728x90
반응형