#include <stdio.h>
void main() {
int field[4][4] = {{0,1,0,1},{0,0,0,1},{1,1,1,0},{0,1,1,1}};
int mines[4][4] = {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
int w = 4, h = 4;
for(int y=0; y<h; y++) {
for(int x=0; x<w; x++) {
if(field[y][x] == 0) continue;
for(int j=y-1; j<=y+1; j++) {
for(int i=x-1; i<=x+1; i++) {
if(chkover(w,h,j,i) == 1) {
mines[j][i] += 1;
}
}
}
}
}
}
int chkover(int w, int h, int j, int i) {
if (i >= 0 && i < w && j >= 0 && j < h) return 1;
return 0;
}
🖍
문제의 코드는 배열 field의 요소가 0이 아닌, 즉 1인 경우, 배열 mines에서 해당 위치를 중심으로 3행 3열의 범위에 1을 더하는 프로그램이다.
• w와 h는 배열의 행과 열의 길이가 저장된 변수
• y와 x는 배열 field의 행과 열 위치를 지정해 주는 변수
• j와 i는 배열 mines에서 1을 더할 범위의 행과 열 위치를 지정해 주는 변수
•chkover()
함수는 j와 i가 배열의 크리르 벗어나는지 검사하는 함수이며, 벗어났다고 판단되면 0을 반환하여 해당 위치에는 1을 더하지 않도록 함
continue
를 만나면 그 이후의 코드를 실행하지 않고 반복문의 처음으로 이동한다.
관계대수는 관게형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이다. 관계대수에서 사용되는 연산은 다음과 같다.
🖍 ① ∪, ② −, ③ ×, ④ π, ⑤ ⨝
항목 합집합 A ∪ B 차집합 A − B 카티션 프로덕트 A × B 프로젝트 A π B 조인 A ⨝ B
① 은/는 기능을 처리하는 클래스와 구현을 담당하는 추상 클래스로 구별하며, 서로가 독립적으로 확장할 수 있도록 구성한 패턴이다. 기존 시스템에 부수적인 새로운 기능들을 지속적으로 추가할 때 사용하면 유용하며, 새로운 인터페이스를 정의하여 기존 프로그램의 변경 없이 기능을 확장할 수 있다.
② 은/는 한 객체의 상태가 변화하면 객체에 상속된 다른 객체들에게 변화된 상태를 전달해주는 패턴이다. 일대다의 의존성을 정의하며, 주로 분산된 시스템 간에 이벤트를 생성·발행(Publish)하고, 이를 수신(Subscribe)해야 할 때 이용한다.
🖍 ① Brige, ② Observe
https://velog.io/@m_ngyeong/Design-Pattern
public class HelloWorld {
public static void main(String[] args) {
int result[] = new 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++) {
System.out.print(result[k]);
}
}
}
🖍 24513
192.168.1.0/24
네트워크를 FLSM 방식을 이용하여 3개의 Subnet으로 나누었을 때, 두 번째 네트워크의 브로드캐스트 IP주소를 10진수 방식으로 쓰시오.
🖍 192.168.1.127
1️⃣192.168.1.0/24
에서/24
는 Subnet Mask를 의미하며, Subnet Mask는 1개의 개수가 24개라는 것으로 이를 2진수로 표현하면11111111 11111111 11111111 00000000
이다.
*Subnet Mask를 Subnet으로 나눌 때는 서브넷 마스크가 0인 부분을 8비트를 이용하면 됨.
2️⃣ "3개의 Subnet으로 나눈다"는 2의 n승 ≥ 3을 만족하는 n은 2이므로, 8비트 중 3일 표현하는 데 필요한 2(2의2승)비트를 제외하고 나머지 6비트를 호스트로 구성한다.
3️⃣ 네트워크 개수 = 2의2승 = 4, 호스트 개수 = 256 / 네트워크 개수 = 256 / 4 = 64
4️⃣ FLSM 방식(고정된 크기로 주소를 할당)을 이용하여, 64개의 호스트를 갖는 4개의 네트워크로 나눌수 있지만, 문제에서 '3개의 Subnet으로 구성하라'하여, 4번 네트워크는 사용되지 않는다.
5️⃣ ∴ 두 번째 네트워크의 브로드캐스트 주소는192.168.1.127
이다.Subnetting(서브넷팅)
IP 주소 고갈문제를 해결하기 위해 원본 네트워크를 여러 개의 네트워크로 분리하는 과정이다.
- 대표 네트워크 IP 주소일 경우, 호스트 ID는 2진수 기준으로 모두 0으로 채움
- 브로드캐스트 IP 주소일 경우, 호스트 ID는 2진수 기준으로 모두 1으로 채움
- Types of Subnetting :
- FLSM(Fixed-Length Subnet Masking): 서브넷의 길이를 고정적으로 사용하고, 한 대역을 동일한 크기로 나누는 방식
- VLSM(Variable Length Subnet Masking) : 서브넷의 길이를 가변적으로 사용하고, 한 대역을 다양한 크기로 나누는 방식
참고,
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.
https://newbt.kr/시험/정보처리기사%20실기/2022년%203회/흙기사