대각선 방향으로 수열 채우기 5x5, 7x7, 9x9 ...
배열의 가로, 세로, 가로 대각선의 합의 값이 모두 같은 2차원 배열
홀수 정방 배열에만 가능 (정사각형 배열)
1) 중간 열에서 시작
2) 오른쪽 대각선 상향 방향으로 진행
3) 행이 0배열을 벗어나면 마지막 행으로
4) 열이 5열을 벗어나면 첫번째 열로
5) 5의 배수일 경우 +1 행만 이동
6) SQ(R,C(행,열))
/ | 1열 | 2열 | 3열 | 4열 | 5열 |
---|---|---|---|---|---|
1행 | 17 | 24 | 1 | 8 | 15 |
2행 | 23 | 5 | 7 | 14 | 16 |
3행 | 4 | 6 | 18 | 20 | 22 |
4행 | 10 | 12 | 19 | 21 | 3 |
5행 | 11 | 18 | 25 | 2 | 9 |
package com.busan.fullstack;
public class Mabang {
public Mabang(int num) {
start(num);
}
int[][] mabang;
public void start(int num) {
mabang = new int[num][num];
int x = 0;
int y = num/2;
mabang[x][y]=1;
for(int pos=2;pos<=num*num;pos++) {
// 1. 왼쪽 대각선위로 먼저 이동시킴
x= x-1;
y= y-1;
// 1. 위치(x,y) 이동 후 위로 벗어나는 경우; x<0
// 2. 위치(x,y) 이동 후 왼쪽으로 벗어나는 경우; y<0
// 3. 위치(x,y) 이동 후 북서쪽으로 벗어나는 경우; x<0 and y<0
// 4. 위치(x,y) 이동 후 배열을 벗어나지는 않지만 이동한 위치가 이미 다른값이 있을 경우 : mabang[x][y] !=0
if(x<0) {
if(y<0) {
x=x+2;
y=y+1;
}else{
x=x+num;
}
}else{
if(y<0) {
y=y+num;
}else {
if(mabang[x][y]!=0){
x=x+2;
y=y+1;
}
}
}
mabang[x][y] = pos;
}
for(int[] first : mabang) {
for(int value : first) {
System.out.print("["+value+"]"+" ");
}
System.out.println();
}
}
}
equals 좌측과 우측의 주소를 비교
자기가 가지고 있는 스트링을 스스로 이전함
뭔가를 감싸는 클래스로 정의됨
byte, short, int, long, char, float, double, boolean(primitive type)Wrapper class로 변환 Byte, Short, Integer, Long, Character, Float, Double, Boolean
hash : 정보를 저장, 검색하기 위해 사용하는 자료 구조
자료의 특정 값(키 값)에 대해 저장 위치를 반환해주는 해쉬 함수
hashCode() 메서드는 인스턴스의 저장 주소를 반환
문자열 연결을 계속해서 garbage가 생길 수 있음
내부적으로 가변적인 char[]배열을 가지고 있는 클래스
문자열을 여러 번 연결하거나 변경할 때 사용하면 유용함
StringBuffer는 멀티 쓰레드 프로그래밍에서 동기화(sybchronization)를 보장문자열을 클라이언트가 보내면 스트링버퍼가 문자열을 받아서 작업을 함, 클라이언트가 아무리 많은 문자열을 보내도 순서대로 문자열이 입력됨
기차표 예약을 할 때, 한명이 자리를 차지하면 다른 사람은 진입이 안됨(동기화)
스트링빌더 동기화 x, 스트링버퍼 동기화 o
1) public : 접근 제한이 없음
2) 디폴트 접근 제한자(아무것도 안붙어 있는 것) ex) class AccessTest{ } : 같은 패키지내에 있는 클래스만 접근 가능
3) private는 붙을 수 없음
4) final : 상속 받을 수 없음
1) public : 접근 제한이 없음
2) 디폴트 접근 제한자(아무것도 안붙어 있는 것) : 같은 패키지내에 있는 클래스만 접근 가능
3) private : 다른 클래스에서 접근 못함 → 싱글톤 만들 때 사용하게 됨
4) final : 오버라이딩 할 수 없음
1) public : 접근 제한이 없음
2) 디폴트 접근 제한자(아무것도 안붙어 있는 것) : 같은 패키지내에 있는 클래스만 접근 가능
3) private : 다른 클래스에서 접근 못함
4) final : 상수가 됨