[정보처리기사 실기 최신문제집] 기출문제 2023년 01회

이기적 영진닷컴
21 팔로워
2024. 10. 21.
이 동영상은 [이기적 정보처리기사 실기 최신문제집] 도서의 내용을 바탕으로 제작되었습니다.
🔹 도서 자세히 보기 : https://www.yes24.com/Product/Goods/133821787
🔹 모르는 문제? [이기적 스터디 카페] 질문하기 : https://cafe.naver.com/yjbooks
🔹 이기적 홈페이지 : https://license.youngjin.com/
🔹 인스타그램 : https://www.instagram.com/license.youngjin_official/
첫 번째 문제부터 같이 보도록 하겠습니다.
C 코드를 수행하여 출력되는 결과를 쓰라고 되어 있고요.
아래쪽에 보면은 여기 b2d라는 함수가 있고요.
그 함수에 어떤 문자열을 전달을 해서
이걸 어쩌고저쩌고 계산을 해가지고
그 결과를 리턴 받아서 출력을 하는
이런 형태로 지금 구성이 되어 있습니다.
그래서 보니까 위쪽에 변수 몇 개 초기화를 하고 나서
포문이 진행이 되는데
포문이 우리가 알고 있는 일반적인 형태가 아니죠.
포문은 보통 0부터 시작해가지고
10 바로 전까지 진행을 하고
그 다음에 I++ 이런 식으로 진행을 하는데
형태가 전혀 달라요.
이럴 때는 내가 알고 있는 익숙한 형태가 아닐 때
디버깅표를 작성하는 게 제일 좋습니다.
그거를 같이 한번 해보도록 할게요.
이건 좀 지우고
디버깅표를 작성을 해야 되니까
일단은 여기 문자열이 전달되는 걸 보니
이거 일단은 적어놓고 진행을 하도록 하겠습니다.
위쪽에 s 써놓고
이게 문자열이 전달이 되는데
문자 포인터죠.
그래서 문자 형태로 하나씩 들어간다고 생각하시면 돼요.
그래서 00101101
이렇게 들어가고요.
그리고 포인터로 문자 단위로 접근을 할 테니까
위쪽에 인덱스도 적어 놓겠습니다.
이렇게 칸을 좀 만들어 놓을까요.
이 상태라고 보시면 될 것 같아요.
이렇게 되어 있고
변수도 여기 보면은 DEC랑 P 나와 있죠.
이게 책에서는 PR로 되어 있을 거예요.
정어표에는 등록을 해놨는데
죄송합니다. P예요.
DEC에서 일단 0이고요.
이것도 디버깅표로 해놓을까요.
아니다. 이렇게 그냥 할게요.
변수 하나 있는 거니까 P하고 이렇게
디버깅표는 딱 정해진 규격 같은 게 없어서
본인이 인지를 할 수 있는 형태라고 하면은
어떻게 써도 상관이 없습니다.
그냥 꼼꼼하게만 쓰면 돼요.
이렇게 해놓고
이제 포문 진행을 하는 건데
여기 포문이 보니까
인트 I라는 게 나와요.
그래서 이 I를 하나 적어 놓고
I가 지금 보니까
사이즈 오브 S 빼기 1 이렇게 되어 있죠.
사이즈 오브 S라는 건 이 S의 길이를 얘기하는 건데
0부터 7까지니까 총 8개잖아요.
결과가 8이 나옵니다.
거기에 1을 뺀 거니까 7이란 뜻이에요.
그래서 7로 시작할 겁니다.
이거를 7로 시작할 거고
그리고 여기 조건 나와 있죠.
I가 0 이상인지 체크를 하고 있습니다.
바로 옆에 있으니까 0 이상인지 바로 체크가 되죠.
True라고 해놓을게요.
그리고 I++이 있는데
이 I++은 이 안쪽에 있는 반복문이 전부 다 진행한 다음에
아, 뿔뿔이 아니죠. 죄송해요.
I 마이너스 마이너스
이 반복문이 전체가 진행된 다음에
한 번 하고 이런 식으로 진행을 하니까
제일 뒤에다 놔야 돼요.
이따가 할 거예요. 이따가
자, 그럼 요거부터 해야 되죠.
요거를 적어볼까요.
DC 플러스는 하고
요게 사실 제일 중요한 코드인데
SI 빼기 문자 0
숫자가 아니라 문자 0이라는 게 포인트입니다.
어쨌든 요렇게 들어가고요.
여기다가 곱하기 P를 합니다.
그리고 아래쪽에 있는 이 코드도 적어야 되겠죠.
요거는 이제 P 곱하기 2라고 되어 있고
그 다음에 마지막에 요거
I 마이너스 마이너스
요걸 해주는 거죠.
그래서 좀 구분을 해서 정리를 하면
요렇게 되는 거죠.
요렇게
요렇게 해서 진행을 하면 됩니다.
자, 그러면 요거를 좀 이해를 하고 넘어가야 될 것 같아요.
요 부분
여기 보면은 SI 빼기 문자 0 요렇게 되어 있는데
아까 제가 말씀드렸듯이 0하고 1들이
문자 형태로 들어가 있어요.
문자 10로 넘겼기 때문에
그러면 결국에 요 코드는
어떤 걸 하게 되냐면
색깔을 좀 바꿔서
둘 중에 하나입니다.
문자 0 빼기 문자 0
또는 문자 1 빼기 문자 0
요 둘 중에 하나를 하게 된다는 거거든요.
자, 요거에 대한 결과를 미리 말씀을 드리면
0하고 1인데요.
일단은 모든 문자는 늘 말씀드리지만
고유의 정수값을 가지고 있어요.
근데 문자들이 차례대로 나열되어 있기 때문에
문자 0과 문자 1의 정수값 차이는 1입니다.
그래서 어쨌든 0하고 0하고 빼면 당연히 0이고요.
요거는 이쪽
요 1이 하나 더 높기 때문에
결과가 1이 나옵니다.
결국에 이건 무슨 이야기를 하는 거냐면
색깔을 어떻게 해야 될까요?
그냥 할게요.
요 문자 0을 숫자 0으로
문자 1을 숫자 1로 바꿔주는 코드다라고
알고 계시면 됩니다.
이해되시죠?
그렇게 정리를 하면 되겠습니다.
그리고 지금 시작이 어디서부터예요?
여기 보면은
레이저 포인트를 해야죠.
요거 7에서부터 잖아요.
그리고 i 마이너스 마이너스를 진행한단 말이죠.
그럼 결국에 이건 무슨 얘기냐면
7부터 시작해서 이렇게 가겠다는 거예요.
거꾸로 가겠다는 거죠.
요것도 좀 인지를 하고 보면 좋겠죠?
그래서 요거는 결국에 요 위치죠.
이 위치에 있는 걸 가지고
곱하기 p를 하겠다는 의미가 됩니다.
그래서 지금은 1 곱하기
p가 지금 현재 1이잖아요.
요 위쪽에 여기 보이죠?
그래서 이렇게 1 곱하기 1을 하게 되는 겁니다.
요게 DEC에 들어가는 거죠.
나중에 결과 정리를 할게요.
이렇게 하고 그 다음에 p는
2를 곱한 다음에 다시 누승을 하는 형태예요.
곱하기 는이잖아요.
그래서 원래는 p가 1이었는데
얘가 2가 되는 거죠.
그리고 i 마이너스 마이너스를 하게 되면은
i는 7에서 6으로 바뀝니다.
요걸 다시 정리를 할게요.
그러면 이제 i 값은 6이 됐고요.
그 다음에 p 값은 2가 됐으니까
여기 위에를 2로 바꿀게요.
그리고 DEC도 마찬가지죠.
1 곱하기 1이 누적됐으니까
DEC는 1이 돼 있을 거예요.
천천히.
그리고 계속해서 진행을 합니다.
이거는 일단은 어떻게 되든 간에
0 이상일 때는 무조건 true니까
요건 연결해서 생각을 하시면 되고요.
그러면 현재 6이니까
지금은 여기를 가리키고 있겠죠.
여기 끝났어요.
여기 0이에요.
그러면 요건 0이 될 거고요.
이거 말씀드렸죠.
문자 0은 그냥 숫자 0으로 바꾸는 거라고.
그리고 곱하기를 하는데
곱하기가 어떻게 됐어요.
2로 바뀌었죠.
2 이렇게 들어갑니다.
결과는 0이잖아요.
0이니까 당연히 아무것도 누적이 안 되겠죠.
그리고 나서 P를 다시 2를 곱합니다.
그리고 I가 하나 줄어들겠죠.
이 상태죠.
그리고 다시 위쪽에 반영을 하죠.
DEC는 그대로예요.
0을 누적한 거기 때문에
P같은 경우에는 2에서 4로 바뀝니다.
이렇게 진행이 되겠죠.
그리고 마찬가지.
I가 5고요.
0 이상이니까 true고요.
그럼 이제 이거 끝났으니까
이제 이거죠.
이번에는 1 곱하기 4를 하게 되겠죠.
그리고 4가 2배가 돼서 8이 될 거고요.
그다음에 I가 마이너스 마이너스 돼서 4가 될 거예요.
이 정도만 사실 파악해도 대충 패턴이 보일 겁니다.
7, 6, 5 이렇게 1씩 줄어들고 있는데
갑자기 2씩 줄어든다든지
3씩 줄어든다든지 그러지 않잖아요.
우리가 I 마이너스 마이너스밖에 없으니까.
그러니까 이거는 패턴적으로
이렇게 갈 거 같네 이렇게 알 수 있죠.
이런 식으로.
0일 때까지도 가겠죠.
그러면 여기서도 마찬가지죠.
이 위치에 지금 보니까
오른쪽에서부터 하나씩
레이저 포인트로 말씀드리겠다.
오른쪽에서부터 하나씩 가고 있으니까
여기도 마찬가지 다 오른쪽에서부터
하나씩 하나씩 가겠네를 알 수 있잖아요.
그러면 여기도 마찬가지죠.
1 곱하기
지금 이 부분이니까요.
그 다음에 이거 세 번째는 0이죠.
0 곱하기
그 다음에 두 번째는 1 곱하기
밑에 있는 두 개는 0 곱하기
0 곱하기 이렇게 진행이 될 거다라는 거 알 수 있고요.
그 다음에 이 오른쪽에 있는 P는
2, 4, 8 두 배씩 늘어나니까
얘는 16이겠죠.
얘는 32일 거고요.
64일 거고
128이겠죠.
그리고 256일 거예요.
이렇게 두 배씩 늘어나고 있으니까요.
그러면 8 곱하고
16 곱하고
32 곱하고
64 곱하고
128 곱하고 이렇게 되겠죠.
바로 위에 있는 걸로 이렇게 곱해지고 있으니까요.
이렇게 될 거예요.
이것도 똑같이 이렇게 내려갈 거고요.
이런 식으로
마지막에 마이너스 1까지 되긴 하겠지만
이 패턴으로 진행이 될 거란 말이죠.
패턴을 파악을 하게 되면
저 같은 경우에는 세 번 말했지만
여러분들 시간 넉넉하니까
한 4번, 5번까지 진행을 해보고
패턴을 파악해도 됩니다.
어쨌든 파악을 하게 되면
디버깅 편은 항상 똑같은 형식의 계산을 하기 때문에
순서로
똑같은 순서로 계산을 하기 때문에
이런 식으로 작성도 가능하다는 거죠.
그럼 우리가 지금 현재 알고 싶은 값은 뭐냐면
여기서 DEC예요.
DEC가 어떻게 누적이 돼서
결과로 나오냐를 물어보고 있는 건데
아래쪽에 보면 굉장히 곱하기가 많아 보이지만
대부분 다 어떻게 하냐면
0을 곱한단 말이에요.
그러니까 0을 곱하는 건 사실 의미가 없죠.
1을 곱하는 것만
계산을 해서
누적을 해주면 된다는 겁니다.
그래서 1, 4, 8, 32까지 해서
이걸 다 더한 값이
답이 될 거라는 얘기입니다.
32하고 8을 더하면
40이고
4하고 1을 더하면 5니까
결과는 45가 되겠죠.
이런 식으로 전혀 모르겠는 코드도
디버깅표를 작성하면 패턴을 파악할 수 있다.
그런 의미가 되겠습니다.
다음 문제 넘어갈게요.
OSI 7계층 중 2계층에서 구현되면
저기 2계층이라는 말이 있고요.
터널링을 위해서
단말 로드를 상호인식시켜주는
프로토콜은 무엇인지 라고 돼 있습니다.
여기 책에 나와있진 않거든요.
모든 용어를 책에 담을 수는 없기 때문에
자주 나오는 용어들만
일단은 또는 나왔던 용어들만
기록을 하고 있는데
이런 부분은
ICT
여러분 나중에 검색을 해보세요.
여유가 되면
근데 이거 공부하는 것보다는
코드 공부하는 게 훨씬 더 도움이 되긴 하지만
ICT 시사상식
이렇게
검색을 해보면
연도별로
수십 개의 용어씩
이 용어를 설명하는
책자 같은 게 발행이 됩니다.
이 책자에서 나와있던
용어인데
이게 2021년도 용어가 그럴 거예요.
그러니까
2020년대
21, 22, 23, 24년도
이 용어들이 수십 개씩 매년 나오는데
이걸 다 공부하는 것보다는
어쨌든 한 문장 정도 나오잖아요.
이 코드 같은
우리가 무조건 나오는 부분 있잖아요.
그 부분을 공부하는 게 훨씬 좋습니다.
이건 어쨌든 그렇고요.
부담 갖지 말라고 말씀드리는 겁니다.
어쨌든 간에
이게 2계층이니까
레이어2, L, 2
그 다음에 터널링이 T잖아요.
프로토콜은 P고요.
이게 답입니다.
레이어2 터널링 프로토콜
이렇게
부가적인 부분도 말씀을 드렸습니다.
세 번째 문제로
넘어갈게요.
빈 칸을 채워서
테이블 R에서
인원이 20명 이상인
학과 별로
별이 포인트입니다.
가장 높은 점수를 출력하는
SQL문을 완성하라고 되어 있는데
학과 별이라고 써있으니까
학과 별로 일단
그룹을 묶어야 돼요. 별이라는 게 붙었어요.
그래서 이쪽에
빈 칸을 쓰는 겁니다.
그룹을 먼저
묶어줘야 돼요.
그룹 by 학과
이렇게
묶어줍니다.
그리고 나서
학과 별로 20명 이상인지
체크를 해야 되기 때문에
그룹 by 안에 조건이 붙는 거예요.
그래서 having입니다.
그룹 안에 조건 붙는 건
having이죠. where이 아니라
이런 건 틀리시면 안 돼요.
여기서 이제 20명 이상인 걸
체크를 하는 거니까
20 이상이다 이렇게 적어줘야 되는 거고
여기에는 전체
개수를 파악을 하면 되는 거니까요.
자주 나오는 거죠. count별입니다.
count별 말고
이 별 안에
별 대신에
여기 나와 있는 게 있다고 하면
점수라든지 학번이라든지
그런 걸 써도 되긴 하지만
별이 더 편하잖아요. 이렇게 기억을 해주시는 게
좋습니다. 그래서 지금 빈 칸에
이거까지 적어줘야 된다.
괄호는 아니에요. 이 정도까지 적어줘야 된다.
라고 인지를 하시면 되겠습니다.
넘어갈게요.
이것도 용어죠.
자바스크리트 및
XML 등의 기술을 결합한 것으로
비동기적으로
필요한 부분만 어쩌고저쩌고
일단은 자바스크리트랑
XML 이것까지만
알고 있어도 이 문제
풀 수 있어야 됩니다.
a, j,
a, x예요.
이 x가 xml이고요.
이 j가 자바스크립트예요.
이 a가 end예요. 자바스크립트
end xml. 이 뜻입니다.
비동기가
어싱크로 어쩌고저쩌고
이렇게 시작을 할 겁니다.
이 a가 첫 번째 a에 해당하는 부분이에요.
그래서 ajx다라는 거죠.
첫 글자가 뭔지는
이렇게 풀어내실 필요는 없고
그냥 자바스크립트
xml 이런 말 나오고
비동기라는 말 나오면
ajax구나.
이렇게 알고 계시면 되겠습니다.
다섯 번째
테이블 아래서 동아리에
가입하지 않은 학생을 삭제하는
SQL 문장을 작성해라.
테이블 삭제가 아니라
데이터를 삭제하는 것이기 때문에
delete가 맞습니다.
테이블 삭제는 drop이죠.
delete from
이 문자로 쓸게요.
그리고 r 이렇게 쓰면
여기까지만 쓰면 r 테이블
내부 데이터가 전부 삭제되죠.
where 써주셔야 돼요.
써주시고
이쪽에다가 동아리에
대한 저기를 체크하는 건데
동아리에 가입되어 있지 않은 학생은
동아리 필드가 비어있다고 되어 있잖아요.
그러니까 동아리가 비어있는지
체크를 해야 되는데
동아리가 비어있는지 체크하려면
동아리는 이렇게 쓰는 게 아니라
is 너를 써주셔야 돼요.
이게 동아리 칸이
비어있습니다라는 뜻이에요.
그래서 동아리 칸이 비어있으면
가입하지 않은 것이기 때문에 그 학생을 지워버리겠다.
이렇게 정리가 되는 거죠.
넘어가서
아래에서 설명하는 용어를
보기에서 찾아 쓰시오.
인터넷상의 다른 컴퓨터를 자신의 컴퓨터처럼
사용할 수 있도록 하는 서비스라고 하면
일단 두 가지가 있습니다.
텔렛과 ssh가 있죠.
이렇게 있는데
이 둘 중에 하나를
찾을 수 있는 단서가 두 번째 줄에
있는 거예요. 22번 포트를
사용한다고 써 있습니다.
텔렛은 23번 포트를 써요.
요게 22번 씁니다.
그러니까 답은 ssh가 되겠죠.
넘어가서
아래 자바코드에 적용된
객체제한 기술을 쓰라고 되어 있어요.
캡슐화 정부은닉은 제외하고
다른 기술을
찾아보세요. 뭐 이렇게 써 있는 거죠.
그래서 보니까
일단 상속이라든지
업캐스팅이라든지
오버라이딩 요건 아닙니다.
왜 그러냐면 상속이 안되어 있기 때문에요.
지금 person이라는 클래스 하나 밖에 없어요.
그럼 나머지인데
자 볼게요. 여기 보면은 메소드가
똑같은 이름으로 총 4개가 있습니다.
근데 다 뭐가 달라요?
맥의 변수가 다릅니다.
똑같은 이름인데 맥의 변수가 다르다?
이거 오버로딩이에요.
오버
로딩이라고 적어주시면 됩니다.
또는
생성자라는 걸 앞에 붙여도 괜찮습니다.
지금 보면은
함수명이랑, 함수가 아니죠.
메소드명이랑 클래스명이랑 똑같죠.
이럴 때는 생성자메소드라고
이야기를 하죠.
생성자메소드이기 때문에
생성자 오버로딩이라고 써도 괜찮아요.
그냥 오버로딩이라고 써도 괜찮고요.
둘 다 정답 처리가 될 겁니다.
넘어갈게요.
아래 자바코드는
배열을 오름차선 선택정렬을 한다고 되어 있어요.
선택정렬이
일단은 뭔지
간단하게 설명을 할게요.
예를 들어 데이터가 5개가 있어요.
그러면
요거 하나를 일단 선택합니다.
그리고 나머지에 대해서
최대값을 구해요.
최소값이죠.
지금은 오름차선이니까요.
최소값을 구해서
이게 최소값이네요.
이 최소값 위치와
그 다음에 현재 선택된 위치
이 두 가지를 비교합니다.
그래서 만약에
이 선택된 위치값이 더 커요.
지금 최소값이라고 해서 구해놨는데
더 크다. 그러면 서로 바꾸는 거예요.
그러면 이쪽에
가장 작은 값이 들어가겠죠.
그러면 그 다음에
이제 요걸 선택하고
또 나머지 남은 애들 중에서
또 작은 값을 구하고
요런식으로 진행되는게 선택정렬입니다.
어쨌든 모든
정렬에는 반드시 뭐가 들어간다?
스왑 공식이 들어갑니다.
스왑코드가. 스왑코드 어떻게 하죠?
스왑이에요.
어떻게 하냐면
요런 형식이죠.
a, b를 바꾸고 싶다고 했을 때
항상 요렇게 들어갑니다.
요렇게 들어가는 거예요.
그래서 요 가운데 있는 얘네들이
서로 바뀌는 겁니다.
꼭 기억하고 계셔야 해요.
그리고 이쪽에 스왑이 있잖아요.
그리고 요기 아래쪽에
이 중간 부분이 비어있죠.
자 그러면 이거 어떻게 씁니까?
요거랑 요거를 요렇게 요렇게 써주면 되잖아요.
그러니까
요 니은 부분은
a, r, r, i
는
a, r, r, j
로 써주시면 돼요.
요렇게가 일단 니은의 답이 될 거고요.
그리고
이 위쪽에 있는 이 부분은
선택정론에 대한 개념인데
여기 써있잖아요.
민인덱스라고
그러니까 이거는 최소값이
적혀있는 위치를 얘기하는 건데
최소값이 적혀있는 위치가
아까 제가 설명할 때 했던
요 부분이에요.
얘네들 중에 최소값이
여기에요 했던 요 부분
요 파란색 화살표
요게 민인덱스에요.
그리고
a, r, r, j 는 요걸 얘기하는 거죠.
요렇게 비교를 한다고
생각하면 됩니다.
서로서로 비교를 한다고 생각하면 되는데
요 비교를 요렇게 하고 있는데
이 지금 제일
작아야 되는
제일 작아야 되는
이놈이 제일 작으면
아무 문제가 안됩니다.
그냥 넘어가면 돼요.
근데 제일 작아야 하는 놈이 큰 경우에는
제일 작아야 하는 놈에다가
다시 요 j죠?
요 j값을 집어넣어요. 이게 무슨 얘기에요?
얘가 더 작았다는 소리죠.
그렇지 않으면 이걸 할 리가 없잖아요.
그렇죠?
제일 작아야 하는 위치가 저장되는 곳에
새로운 걸 넣었다는 얘기는
새로운 게 더 작았다는 뜻입니다.
그래서 무슨 얘기에요?
요렇게 라는 뜻이죠.
이 코드를 요렇게 쓰게 되면
어? 얘가 더 큰데?
라는 얘기죠. 그러면 j가 더 작다는 얘기죠.
그래서 그럼 j를 다시 집어넣어
요런 의미가 되는 겁니다.
자 요렇게 정리를 하면 되겠죠?
자 다음은 9번입니다.
요거 비슷하게 문제가 나왔던 것 같은데
똑같은 문제가 또 나오는 경우도 있으니까요.
제어 패킷을 통해
가상의 논리적
경로를 확보한 뒤
보통은 논리적이라는 표현을 많이 쓰는데
요기만 딱 봐도 가상회선이에요.
가상회선
방식입니다.
그 다음에 밑에는
이 논리적 경로 확보 없이
자유롭게
경로에 독립적으로
이게 뭐 똑같은 말이니까요.
설정이 필요 없는 이유는
경로를 확보하지 않기 때문이죠.
어쨌든 자유롭다는 게 포인트가 되는데
이건 데이터그램입니다.
데이터그램
뭐 특별하게 어려운 개념은 아니에요.
넘어갈게요.
자 설명을 읽고
적절한 릴레이션 관련 용어를
보기에서 찾아 쓰시오.
릴레이션 관련 용어는 반드시
무조건 기억하고
이해하고 있어야 합니다.
그래야 다른 거 공부하기도 편하고요.
자주 나오기도 하고요.
하나의 개체를 표현하는
완전하고 고유한
정보 단위라고 되어 있습니다.
레코드라고 할 수 있는데
레코드와
같은 의미를 가진 게 뭐가 있냐
튜플입니다.
그리고 하나의 속성값이
가질 수 있는 모든 원자
속성값의 집합
집합이 포인트죠. 도메인입니다.
예를 들어서
성별이라는 속성이 있으면
이 성별에는 남, 여 이렇게 들어갈 수 있죠.
그럼 이 남, 여가
집합인 거고 여기가 도메인인 거예요.
그 다음에
현실 세계의 대상을
데이터베이스로 표현하고자 하는
논리적인 표현 단위
이건 무슨 얘기냐면
이런 식으로 정리를 해주세요.
나타내주세요 라는 뜻이에요.
예를 들어 학생이 있으면
이 학생은
무수히 많은 정보를 가지고 있겠죠.
그 중에 내가 이 학생 정보를
이 표로 만들었을 때
이 학생 정보 중에
학번, 이름, 국어, 영어, 수학
학계, 이런 것들에 대한
정보를 나타내고 싶다.
이렇게 표현하는 거죠. 이 틀을 얘기하는 건데
이 틀 자체를 뭐라고 하냐면
엔티티
타입이라고 합니다.
개체 타입.
이 개체 타입을 통해서
이 안에 데이터를 하나하나
채워가는 거죠.
이렇게 해서 표현 단위다.
이렇게 정리가 되어 있고
이 디귿의
답이 엔티티 타입이 되겠다.
라는 겁니다.
다음은 11번입니다.
바이러스처럼 다른 파일에
기생하지 않고
독립적으로 자신을
복제하여. 여기서 일단 답이 나와야 됩니다.
복제.
전파 속도가 매우 빠르고
과부하를 일으킨다.
웜이에요.
한글로 웜 써도 되고요.
기생하지 않고 독립적으로
계속 자신을 복제하는 게
포인트인 거예요.
다른 바이러스도 복제를 하지 않나요?
그건 맞아요.
이 부분에 조금 더 특화를 했다고 생각하시면 됩니다.
그래서
자신을 복제하는 게 포인트로 나온다고 하면
웜이 답이 될 수 있다.
다음은
12번입니다.
요거는
시언어인데
보니까
프리젠트가 있고 프리저브가 있네요.
두 가지가 있고
사이즈도
따로 저장을 해놨고요.
이게 몇 개죠?
일곱.
레넨은 7이 들어가겠네요.
이 상태에서
포문을 진행을 하고 있는데
포문이
이 개수만큼
진행을 하고 있는 거 보니까
배열 전체를 도는 건데
여기서 포인트는
이프 안쪽이겠죠?
diff라는 변수를
증가시키는 건데
0으로 되어있는
언제 증가시키는 거냐가 포인트죠.
이거를 지금 출력할 거잖아요.
그러면 이 문장이 결국에 포인트죠.
이 조건식은
지금 문제가 뭐냐면
str1과 str2
서로 다른 배열이에요.
근데 첨자를 같은 걸 쓰고 있습니다.
i를 같은 걸 쓰고 있죠.
같은 걸 쓰고 있다.
같은 변수를 첨자로
사용한다는 건
같은 위치를 비교하겠다는 뜻이에요.
같은 위치를 어떻게 비교해요?
같은 위치가
같은 위치에 있는 요소가
서로 다른지를 비교하겠다는 뜻입니다.
그래서 다르면
diff값을 1 증가시키겠다는 거죠.
그래서 이렇게
이렇게
이렇게 체크를 했을 때
다른 부분이
있는 만큼 증가를 하겠다는 거예요.
그래서 prese
까지는 똑같죠.
이 뒤쪽에 n과 r
t와 v가 서로 다릅니다.
그래서 두 글자가 다르기 때문에
diff는 두 번 증가할 거예요.
그래서 결국에 답은
2가 되겠습니다.
다음 문제 볼게요.
아래 자바코드를 수행한 결과를
쓰시오 라고 되어 있습니다.
위쪽에 애니멀 클래스가 있고요.
애니멀 클래스를 상속받은
cat 이라는
클래스가 있고
아래쪽에
업캐스팅 문제 같네요.
애니멀 상위죠.
상위 참조 변수에다가
하위 객체를 만들어서 집어넣고 있어요.
이거 업캐스팅이죠.
업캐스팅을 하게 되면
상위 요소를 사용을
해야 되는데 이거 보니까 오버라이딩이
있어요. 오버라이딩은 업캐스팅을
무시한다고 이야기를 했습니다.
그래서
애니멀 메이크사운드라고 해서
메이크사운드 위쪽에 있는
메소드를 수행하려고 보니까
이거 오버라이딩 되어 있어요 하면은
이 밑에 있는 걸 수행한다.
그래서 결과가 이게 되는 거죠.
이걸 자주 나왔던 부분이죠.
넘어갈게요.
복잡하게 설계된 클래스를
기능부와 구현부로
분리한 뒤
두 클래스를 연결한다.
기능부와
구현부를 분리해서
이렇게 연결을 한다는 거죠.
이거 다리같이 생겼잖아요.
브릿지입니다.
어렵지 않죠?
넘어갈게요.
아래 코드를 결정 커버리지로
테스트하기 위해 필요한 테스트 케이스는
몇 개인지 써라.
라고 되어 있습니다.
일단 결정 커버리지가 뭔지 알아야겠죠.
결정 커버리지는 결정 문이라는 게
트루 펄스가
한 번씩 나올 수 있게끔
케이스를 설계를 해야 됩니다.
여기서 결정문은 이거죠.
물론 결정문 안에
조건식이 하나밖에 없어가지고
똑같이 판단을 할 수 있겠지만
어쨌든 간에
여기서는 결정문, 이프에서 나오는 결정문이
딱 하나밖에 없어요.
그러면 여기에서 트루 펄스 한 번씩만
나오면 되니까
답은 2입니다.
이렇게 보시면 돼요.
넘어갈게요.
16번. 아래의 자바코드가
정상적으로 수행되기 위해
빈칸에 들어가야 하는 코드를 써라.
라고 되어 있습니다.
일단은 메인부터 한 번 접근을 해보면
메인 이렇게 써있고 밑에
a.fa 라고 되어 있는데
이 a가 객체명이 아니라
클래스명이에요.
클래스명으로 접근해서
그 내부에 있는 멤버에 접근을 하기 위해서는
뭐가 필요하다?
스태틱이라는 키워드가 필요합니다.
정적 요소가 되어야 하기 때문이에요.
그러니까 이 빈칸에는
스태틱이 필요하다.
이렇게 알고 있으면
될 것 같습니다.
17번이에요. 아래 설명을 읽고
파이썬에서 제공하는 자료구조의
유형 중 빈칸에 해당하는 용어를 써라.
나머지가 적혀있으니까
일단
서로 다른 형태의 값을 저장할 수 있는
가변 시퀀스
자료구조. 시퀀스는
인덱싱이 가능하다는 뜻이에요.
순서가 있기 때문에
인덱싱, 슬라이싱 이런 것들이 가능하다는 뜻이에요.
그리고 가변은
수정할 수 있다는 뜻이고요.
수정이 가능한
우리가 알고 있는 리스트입니다.
여기에서 이제 불변으로 바뀌면
트리플로 가는 거예요.
그 다음에
정렬되지 않는
정렬되지 않는다.
고유한 값을 저장할 수 있다.
중복을 허용하지 않는다는 뜻입니다.
이건 집합이에요. 셋이라고도 하죠.
집합이라고 써도 됩니다.
이건 정렬이 안되고
중복을 허용하지 않습니다.
그 특징이에요.
변수의 값이 없거나
할당되지 않았음을 의미한다.
시언어라든지 다른 부분에서는
널이라고 표현을 하는데
파이썬에선 넌이라고
표현합니다.
널이 아니라 넌이 답이에요.
이렇게 보고 넘어가겠습니다.
아래
스키마에 대한 설명을 읽고
빈칸에 알맞은 용어를 쓰시오.
일단 스키마가 총 3가지가 있죠.
외부
내부 개념
개념이라고 쓸게요.
이렇게 있는데
특징을 하나씩 보죠.
특정 사용자의 입장에서
필요한 데이터베이스의 구조를
정의한다.
특정 사용자. 이건 데이터베이스
밖에 있는 애들이죠.
이게 외부입니다.
이렇게 보면 어렵지 않죠.
그 다음에
모든 사용자 조직에 있는
모든 사용자의 입장에서 필요한
데이터베이스의 구조를 정의한다.
모든 사람에 대한
이 데이터베이스가 존재하는
그
의미 같은 거죠.
이거는 개념입니다. 개념.
나는 이런 데이터베이스가 있으면 좋겠어.
나는 저런 데이터베이스가 있으면 좋겠어.
모든 사용자에 대한
요소를
담아서 만드는 거잖아요.
이 개념이라고 표현하면 되고요.
그 다음에 물리적인
저장장치 입장에서
데이터가 저장되는 방법이나 구조를
정의한다고 되어 있습니다.
데이터베이스의 구조를 정의한대요.
물리적인 저장장치라는
말이 나오죠.
데이터베이스 그 자체. 데이터베이스
안에 실제로 어떻게 구조가 들어가
있는지. 데이터베이스 안에
있는 부분이죠. 이게 내부입니다.
그래서 이건 물리적인 장치
내부 구조.
이런 말 나오면 내부. 말 그대로.
그리고
사용자의 입장에서 그러면
데이터베이스를
내부에서 만들고
그걸 제어하는
그 사람들보다 더 바깥에 있는
부분이기 때문에 외부.
이렇게 정리를 하시면 될 것 같아요.
다음. 네트워크에 연결된
단말기의 운영체제에서
오류 메시지를
수신하는데 사용되는
제어 메시지 프로토콜은 무엇인가
라고 되어있습니다. 일단 네트워크라고
되어있으니까 인터넷이라던지
이런 표현이 들어가죠. 그 다음에
오류 메시지를 수신하는데
사용되는 제어 메시지
프로토콜은 하나밖에 없어요.
제어 메시지 프로토콜
제어가 컨트롤이고
메시지는 메시지고 프로토콜
하면 cmp잖아요. 여기 있죠.
인터넷 컨트롤 메시지 프로토콜
그래서 icmp가 답입니다.
특정 키워드를
딱 집어서 그 키워드랑
용어랑 연결을 시켜서
영어 암기하듯이 공부하시면 되요.
마지막 문제로
자 요거
포인터가 나왔네요.
여기 위에 보시면 swap 보이시죠.
swap이 나와있는데
포인터로 swap을 하고 있는 거잖아요.
그러면 어떤 특정 요소를
두개를 건네서
그걸 서로 swap을 시켜서
원본에 적용을 시킨다고 생각하시면 됩니다.
기본적으로
참조에 의한 전달을
이야기하는 건데
중요한 건 문자 두개를 받아서
그 두개를 swap시킨 다음에
원본에 돌려준다. 이렇게 정리를 하시면 되요.
결국에 바꿔준다는 뜻이에요.
어쨌든
밑에 있는 걸 보면
여기 영진이라는
문자열이 있구요.
그 다음에 아래쪽에
fa str 이라고 되어있습니다.
fa가 여기 있죠.
이 영진을 전달을 받아서
뭔가 진행을 하는 것 같습니다.
요거 한번
계산을 해볼까요?
일단 size of str 이라고 되어있는데
요게 지금
8개의
문자니까
8이구요. 빼기를 하니까
7 나오겠죠.
이 포문을 보니까
0부터
방금 계산했던 7의
절반만큼만 진행을 하겠대요.
그러면 7을 2로 나누면
3.5지만 정수 나누기 정수이기 때문에
3이죠.
0부터 3까지 진행을 하겠다는 뜻이에요.
여기 보면은
여기 3전까지가 아니라
등호가 있으니까 3까지
1씩 증가를 하겠다.
이런 의미가 되는거죠.
요렇게 하게 되는데
요 전달을 할 때 똑같은 str에서
i와
2-i 를 지금 전달을 하고 있죠.
그래서
이걸 계산을 해보면
i랑
2-i
를 생각을 해보면
i값이 위에서
방금 이야기했듯이
0, 1, 2, 3까지만 진행을 하잖아요.
근데 현재 2값이
7이거든요.
그래서 7-0을 하게되면 7이구요.
7-1을 하게되면
6이구요.
7-2를 하게되면 5이구요.
7-3을 하게되면
4죠.
요렇게 됩니다.
그러니까
str의 0번째 문자랑
7번째 문자를 보내서
서로 바꾸고
여기 지금 fb가 이거잖아요.
그래서 첫번째 문자랑
여섯번째 문자를 바꾸고
두번째 문자랑 다섯번째 문자를 바꾸고
이런식으로 서로 바꾸겠다는 얘기에요.
그래서 얘는 지금 점점점
써놓을까요?
u, n, g,
j
띄어쓰기가 있으면 안되니까
요거 두개를 서로 바꾸고
요거 두개를 서로 바꾸겠다는 뜻이죠.
얘네들끼리 위치가 바뀌면
요거에 대한 답이 되는거죠.
실제로 바꿔보면
일단은 y랑 n이 바뀌니까
n, y
그 다음에
o랑 i가 바뀌니까
i, 여기는 o구요.
그 다음에 u랑 j가 바뀌죠.
여기가 j고
여기가 u죠.
그 다음에 n이랑 g가 바뀌죠.
그래서 여기가 g고 여기가 n입니다.
그래서 요게 답이 됩니다.
이렇게 위치를 서로 바꿔서
뭔가 진행을 하는 형태로
되어 있습니다.
요거까지 해서 마무리를 하는건데
여기서 조금 도움이 될만한
포인트가 이거에요.
색깔을
보라색으로 할까요?
요겁니다. 요거요거.
어디갔어요? 요거.
요게 7이 지금
이 배열 요소들의
가장 큰 값입니다.
마지막 위치죠.
0부터 쭉 7까지 되어 있는 부분에서
요 7 빼기
i를 하게 되면
i가 처음부터 가잖아요?
그러면 이거는 역순이라는 뜻이에요.
역순으로 뭔가를 하겠다.
그러니까 이 i는 정순이구요.
요거는
역순입니다.
이거를 이미 알고 있다고 하면
이렇게 적을 필요도 없이
얘는 왼쪽에서 부터구나
얘는 오른쪽에서 부터구나
이렇게 알 수 있죠.
그러면 조금 더 문제를 빨리 풀 수가 있습니다.
이런 것들을 하나하나 공부하면서
조금씩 조금씩 알아두시면
문제를 푸는 시간이라던지
분석하는 시간이 조금 더 빨라지실 거에요.
고생하셨습니다.
