void main{
field {{0,1,0,1},{0,0,0,1},{1,1,1,0},{0,1,1,1}};
mines {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
int w = 4, h = 4;
for(y=0; y<h; y++) {
for(x=0; x<w; x++) {
if(field[y][x] == 0) continue;
for(i=y-1; i<=y+1; i++) {
for(j=x-1; j<=x+1; j++) {
if(calculate(w,h,j,i) == 1) {
mines[i][j] += 1;
}
}
}
}
}
for(y=0; y<h; y++){
for(x=0; x<w; x++)
printf("%d", mines[y][x]);
printf("n");
}
}
int calculate(w,h,j,i) {
if (i >= 0 && i < h && j >= 0 && j < w) return 1;
return 0;
}
\
( 1 )은/는 기능을 처리하는 클래스와 구현을 담당하는 추상 클래스로 구별한다.
구현뿐 아니라 추상화도 독립적 변경이 필요할 때 ( 1 ) 패턴을 사용한다.
기존 시스템에 부수적인 새로운 기능들을 지속적으로 추가할 때 사용하면 유용하며,
새로운 인터페이스를 정의하여 기존 프로그램의 변경 없이 기능을 확장할 수 있다.
( 2 )은/는 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달해주는 패턴이다.
일대다 관계를 가지며, 주로 분산된 시스템 간에 이벤트를 생성·발행(Publish)하고, 이를 수신(Subscribe)해야 할 때 이용한다.
void main{
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]);
}
}
[입출력]
점수: 90~100 → 금액: 700만원
점수: 80~89 → 금액: 500만원
점수: 70~79 → 금액: 300만원
점수: 0~69 → 금액: 0만원
[테스트 입력값]
-1, 0, 1, 69, 70, 71, 79, 80, 81, 89, 90, 91, 99, 100, 101
CREATE TABLE 부서(
부서코드 int, 부서명 varchar(50)
PRIMARY KEY(부서코드)
FORELGN KEY(부서코드)
REFERENCES 직원(부서코드)
ON DELETE CASCADE
);
CREATE TABLE 직원(
직원코드 int, 부서코드 int
PRIMARY KEY(직원코드)
FORELGN KEY(부서코드) PEFERENCES 부서(부서코드)
);
insert into 부서 (부서코드, 부서명) value ('10', '영업부');
insert into 부서 (부서코드, 부서명) value ('20', '기획부');
insert into 부서 (부서코드, 부서명) value ('30', '개발부');
insert into 직원 (직원코드, 부서코드) value ('1000', '10');
insert into 직원 (직원코드, 부서코드) value ('2000', '10');
insert into 직원 (직원코드, 부서코드) value ('3000', '20');
insert into 직원 (직원코드, 부서코드) value ('4000', '20');
insert into 직원 (직원코드, 부서코드) value ('5000', '20');
insert into 직원 (직원코드, 부서코드) value ('6000', '30');
insert into 직원 (직원코드, 부서코드) value ('7000', '30');
SELECT DISTINCT COUNT(직원코드) FROM 직원 WHERE 부서코드 = '20';
DELETE FROM 부서 WHERE 부서코드 = '20';
SELECT DISTINCT COUNT(직원코드) FROM 직원;