정처기 24년도 2회 홀수

이주원·2025년 3월 26일

컴퓨터언어

목록 보기
12/50

24년도 2회 1~10 홀수문제 풀이입니다.


객체를 생성해줍니다.

check()는
객체 비교후 출력해주는 메서드 네요

자바에서 == 와 .equals()는 차이점이있어요
예를들어 a == b 는 참조 비교 , 두객체의 주소가 같은지 확인하는 연산
a.equals(b) 는 논리적인 값시 일치하는지 입니다.

그럼 a,b,c는 모두 주소가 다르기때문에
참조비교를한다면 N만 출력하게되요
정답 : NNN


  1. 테이블 추가는 INSERT INTO VALUE 이런형태
  2. 테이블에서 검색할때 사용하는 SQL문
    SELECT
    FROM 입니다.
  3. 전체조회는 *표시입니다 그렇다면
    마찬가지로
    SELECT
    FROM 입니다.
  4. 변경할때 자주 사용하는 쿼리문
    UPDATE
    SET

내용을 요약해보자면 이런내용 같습니다
가상 인터넷망을 만들기위해 IP패킷을 암호화하고 인증을하며 AH, ESP라는 보안 프로토콜을 사용한다.

위 내용이 바로 IPSec 프로토콜입니다.

여기서 AH, ESP란??
AH - 데이터의 무결성( 데이터가 전송과정속에서 변하지않았는지 ), 송신자 인증( 누구에게서 왔는지,IP의 헤더까지 인증 대상입니다. )을 보장하는 프로토콜 입니다.
ESP - 데이터를 암호화하여 기밀성을 보장하고 마찬가지로 인증도 제공합니다 , 주로 암호화를 위해 사용하는 프로토콜입니다.


일단 정답은 AES입니다.

키값을 암호화하기위해 사용하는 알고리즘입니다.
키워드는 DES대체하려고 만들게 되었고
동적인키 고정되어있는 블록을 사용합니다.

DES는 어떤 단점이있길래 새로운 알고리즘을 만들게 되었을까요??
DES는 56비트 키라서 임의로 대입해서 끼워맞출수가 있었습니다.
그리고 블록의 크기가 작으면 대용량 데이터를 암호화하기 힘들다고하네요

그래서 AES는 동적인 키를 사용하면서
대용량 데이터를 암호화하기위해 블록크기가 128비트로 늘어났다고 볼 수있습니다.

금고로 예시를 들자면
키는 자물쇠 비밀번호
블록은 금고의 크기라고 보면될 것 같습니다.

키가 가변적인이유는 보안 요구 수준에따라 크기가 커지거나 줄어들 수 있기 때문입니다.


모듈 응집도는 모듈끼리의 응집도가아니라 모듈을 이루는 기능의 응집도를 말하는거구나? ex_ 하나의 모듈안에있는함수간의 관계 혹은 클래스간의관계

모듈은 배포단위로 보면되겠구나?
ChatGPT의 말 : 맞아요, 아주 좋은 시각이에요! 👏

기능적 - 가장 이상적인 상태로 비슷한 기능끼리 잘 묶여진 상태입니다.
우연적 - 우연히 하나의 모듈 안에 들어 있는 상태
통신적 - 같은 자료 구조나 데이터를 중심으로 관련 작업들이 함께 모여 있는 상태 , 기능적으로 동일하지 않더라도 같은 데이터를 사용하는 모듈을 묶어놓은 상태
절차적 - 기능적 관련은 크게 없지만 기능들이 도미노처럼 순차적으로 진행되는 상태입니다
시간적 - 같은 시점에 실행되는 기능의 모음입니다.
순차적 - 기능적으로 관련이 있어 하나의 모듈의 출력이 다른 모듈의 입력이 될 수 있습니다.
논리적 - 비슷한 범주의 작업들을 하나로 묶어놨지만,
실제 어떤 작업이 실행될지는 조건(if, switch 등)이나 매개변수에 따라 달라짐


RIP는 홉수를 계산하면서 시작노드에서 말단노드까지 이동하는 최단 거리입니다.

장치(라우터)에서 다음 장치(라우터)로 넘어가는 한 번의 이동을 1홉(hop)이라고 해요.
그래서 A -> D -> C -> F


c언어에서 2차원 배열을만들때
arr[3][3] 이런식으로 표기하면 알아서 2차원 배열로 나누어지네요

parr[0] = arr[1], parr[1] = arr[2]
→ parr[0]은 {4, 5, 6}
→ parr[1]은 {7, 8, 9}
이런 형태가 됩니다.

parr[1][1]은 8
*(parr[1]+2)는 parr[1]에서( {7, 8, 9} ) 2인덱스 즉 9
**parr 은 parr[0][0] 즉 4가나와요


문자열 str1 생성
str2[50] 문자열 생성

d는 str2를 가리킴 ("teststring")
s는 str1을 가리킴 ("first")

sumFn에서 str2가 str1로 덥혀져서 firsttring이되는 줄 알았으나
포인터가 5번째를 가르키고
코드에서 보면 \0이붙어짐

'f','i','r','s','t','\0','r','i','n','g','\0'
이렇게됨


str 문자열
seen 배열 생성

caclulFn함수
index는 str의 길이에서 -1을함 즉 8-1 = 7이됨

calculFn(str, 7, seen) → 'd'
calculFn(str, 6, seen) → 'c'
calculFn(str, 5, seen) → 'b'
calculFn(str, 4, seen) → 'a'
calculFn(str, 3, seen) → 'c'
calculFn(str, 2, seen) → 'a'
calculFn(str, 1, seen) → 'b'
calculFn(str, 0, seen) → 'a'
calculFn(str, -1, seen) → ""
이렇게 result에 저장이됨

🔍 예시로 볼게요 (str = "abacabcd")
calculFn(str, 7, seen) 호출 시:
c = str.charAt(7) → 'd'
result = calculFn(str, 6, seen) 호출 ← 이 시점에 멈춤!

이후 재귀는 계속 아래로 가요:
index = 6 → c = 'c' → calculFn(5)
index = 5 → c = 'b' → calculFn(4)
...
index = -1 → base case → return ""

⬆️ 그리고 나서 올라오면서 실행돼요
이제 재귀가 종료되었으니, 아래에서부터 위로 차례대로 if (!seen[c])가 실행됩니다.
예를 들어:
index = 0 → c = 'a'
→ result = ""
→ !seen['a'] == true → seen['a'] = true → return 'a' + "" = "a"
index = 1 → c = 'b'
→ result = "a"
→ !seen['b'] == true → seen['b'] = true → return 'b' + "a" = "ba"
...

맨 마지막에 다시 index = 7 까지 돌아와서 'd' + "cba" 가 되는 거죠.


구조체 abc 생성

노드의 헤드는 a를 가르킴

a -> b를 가르키게됨
b -> c를 카르키게됨

printf문에서 헤드가 a이므로 a의 다음노드인 b에서 값을 출력하면
20

profile
뭐가될지 모름

0개의 댓글