[컴퓨터활용능력 1급 필기] 12년 3회차 시험지 PDF 다운로드
12년 3회차
암호화할 때 사용하는 키(공개키)와 복호화할 때 사용하는 키(개인키)를 서로 다르게 두어, 공개키는 누구나 알 수 있게 공개하고 개인키만 본인이 비밀로 보관하는 방식을 비대칭 암호화 기법이라 한다.
방화벽은 외부 침입을 차단하는 보안 시스템이고, 디지털 서명은 비대칭 암호화를 응용해 작성자를 인증하는 기술이며, 단일키(대칭) 암호화는 암호화와 복호화에 같은 키를 사용하는 방식이므로 문제의 설명과는 다르다.
OSI 7계층 중 하위 세 계층은 물리 계층, 데이터 링크 계층, 네트워크 계층으로 구성된다.
전송 계층은 그 위인 4번째 계층에 해당하므로 하위 세 계층에는 속하지 않는다.
플러그 앤 플레이를 지원하지 않는 장치는 운영체제가 자동으로 인식하지 못하므로, [제어판]의 [새 하드웨어 추가]를 실행해 나타나는 [하드웨어 추가 마법사]에서 장치 종류와 드라이버를 직접 지정해 설치해야 한다.
장치 관리자의 [하드웨어 업그레이드]나 재부팅할 때 표시되는 [새 하드웨어 검색 마법사]는 플러그 앤 플레이 장치를 자동으로 찾아 설치하는 경로이며, 지원하지 않는 장치라도 마법사를 이용하면 설치할 수 있으므로 설치가 불가능하다는 설명도 옳지 않다.
네트워크 설정 마법사는 관리자 권한으로 로그온한 상태에서 실행해야 하며, 여러 컴퓨터가 하나의 컴퓨터를 통해 인터넷을 공유하도록 설정하거나 파일 및 프린터 공유를 설정하는 데 사용한다.
다만 인터넷 프로토콜(TCP/IP)에서 사용하는 IP 주소를 직접 설정하는 기능은 제공하지 않으므로, 이 설명은 옳지 않다.
키보드 등록정보 대화상자에서는 키 반복 속도, 키 재입력 시간, 커서 깜박임 속도 등을 조절할 수 있다.
다만 커서의 모양 자체를 바꾸는 기능은 제공하지 않으므로, 커서 모양을 바꿀 수 있다는 설명은 옳지 않다.
USB는 플러그 앤 플레이를 지원해 컴퓨터를 끄지 않고도 장치를 연결하거나 분리할 수 있으며, 최대 127개의 주변 기기를 연결할 수 있는 컴퓨터 인터페이스이다.
다만 USB는 데이터를 한 번에 한 비트씩 순차적으로 전송하는 직렬 방식의 장치이지 병렬 장치가 아니므로, 범용 병렬 장치를 연결하는 인터페이스라는 설명은 옳지 않다.
네트워크 통신 장애는 케이블 연결과 프로토콜 설정을 점검해 해결하고, 메모리 부족은 메모리를 추가하거나 불필요한 프로그램을 종료해 해결하며, 하드웨어 오작동은 장치 드라이버를 다시 설치해 해결하는 것이 올바른 방법이다.
반면 시스템 속도가 느릴 때 인덱스 서비스를 추가로 설치하는 것은 오히려 시스템 자원을 더 사용하게 되는 조치이므로 속도 저하의 해결책으로 옳지 않다.
탐색기에서 폴더와 파일 영역의 경계선을 드래그하면 두 영역의 크기를 조절할 수 있고, 왼쪽 방향키나 Backspace 키로 상위 폴더로 이동하거나 폴더를 접을 수 있다.
다만 선택한 폴더의 모든 하위 폴더를 펼쳐 표시하는 숫자 키패드 키는 별표(*)이며, 슬래시(/)를 누르는 것이라는 설명은 옳지 않다.
무선 LAN은 케이블 없이 전자기 신호로 통신하므로 설치 장소에 제한을 받지 않으며, 상용화된 고속 무선 LAN은 주로 2.4GHz 대역을 사용하고 CDMA, TDMA, 적외선 등의 전송 방식을 이용한다.
다만 무선 LAN 자체가 ISP에 직접 연결되는 기술은 아니며, 무선 접속장치(AP)를 통해 근거리 통신망을 구성하는 기술이므로 이 설명은 옳지 않다.
게이트웨이는 프로토콜 체계가 전혀 다른 네트워크와 네트워크 사이를 연결해 데이터를 주고받을 수 있도록 변환해 주는 장비이다.
리피터는 신호를 증폭해 전송 거리를 늘리는 장비, 브리지는 동일한 LAN들을 연결해 네트워크 범위를 넓히는 장비, 라우터는 서로 다른 네트워크 간에 최적 경로를 찾아 데이터를 전달하는 장비로 각각 문제의 설명과는 대상이 다르다.
전자 악기나 음향 장치들을 서로 연결해 연주 정보와 각종 제어 정보를 주고받을 수 있도록 만든 표준 인터페이스는 MIDI이다.
WAV는 소리를 그대로 디지털화해 저장하는 파일 형식이고, MP3와 RA/RM은 음성이나 음악을 압축해 저장·재생하는 파일 형식으로 연주 정보를 전달하는 인터페이스와는 성격이 다르다.
클럭 주파수는 전류가 흐르는 상태와 흐르지 않는 상태가 주기적으로 반복되는 것을 나타내며, 이 값이 높을수록 CPU가 더 빠르게 명령을 처리한다. 486 이후에는 메인보드에서 공급되는 클럭을 CPU 내부에서 두 배로 높여 쓰는 클럭 더블링 기술도 사용되었다.
다만 1Hz는 1초 동안 주기가 한 번 반복되는 것을 의미하므로, 1,000번 반복된다는 설명은 옳지 않다.
부품 교체 시 전원을 끄고 작업하고, 최신 백신 프로그램으로 정기적으로 검사하며 중요 데이터를 백업하고, 불필요한 프로그램 설치를 자제하고 정기적으로 점검하는 것은 모두 올바른 컴퓨터 관리 방법이다.
반면 시스템에 문제가 생겼다고 하드디스크의 모든 파티션을 제거하는 것은 저장된 데이터를 모두 잃게 되는 조치이므로 효율적인 관리 방법으로 옳지 않다.
플로피디스크나 USB 메모리, 네트워크 드라이브에서 삭제한 파일은 휴지통을 거치지 않고 바로 영구 삭제되며, 휴지통에 보관된 파일은 복원하지 않는 한 그 상태로 바로 사용할 수 없다. 하드 디스크가 여러 개이거나 파티션이 나뉜 경우 각 드라이브마다 휴지통 크기를 다르게 설정할 수도 있다.
다만 [Shift]+[Delete]로 삭제하면 휴지통을 거치지 않고 완전히 삭제되어 복원할 수 없으므로, 휴지통에 일시 저장되어 복원할 수 있다는 설명은 옳지 않다.
성형 네트워크는 각 단말 장치가 중앙 컴퓨터와 일대일(Point-to-Point)로 연결되어 중앙 컴퓨터를 통해 데이터를 주고받으며, 단말 장치를 추가하거나 제거하기가 쉽다는 장점이 있다.
다만 이러한 구조에서는 하나의 단말 장치가 고장 나더라도 다른 단말 장치의 통신에는 영향을 주지 않으며, 전체 통신망이 마비되는 것은 중앙 컴퓨터가 고장 났을 때이므로 이 설명은 옳지 않다.
운영체제는 사용자와 하드웨어 사이의 인터페이스를 제공하고, 프로세서·저장장치·입출력장치 등 하드웨어와 데이터를 관리하며, 여러 사용자가 하드웨어 자원을 함께 사용할 수 있도록 스케줄링하는 역할을 한다.
반면 응용 프로그램과 데이터베이스 사이에서 데이터 공유와 입출력을 관리하는 것은 데이터베이스 관리 시스템(DBMS)의 역할이지 운영체제의 기능이 아니므로 이 설명은 옳지 않다.
둘 이상의 프로세스들이 다른 프로세스가 차지하고 있는 자원을 서로 무한정 기다리고 있어서 결국 프로세스의 진행이 중단되는 상태
제시된 설명은 둘 이상의 프로세스가 서로 상대방이 점유한 자원을 무한정 기다려 어느 쪽도 더 나아가지 못하는 상황이다. 이렇게 프로세스들이 서로를 기다리며 영원히 멈춰 버리는 상태를 교착 상태(Dead Lock)라고 한다.
상호 배제(Mutual Exclusion)는 한 자원을 한 번에 한 프로세스만 사용하도록 제한하는 기법으로, 교착 상태가 생기기 위한 필요조건 가운데 하나일 뿐 멈춘 상태 자체를 가리키는 말이 아니다.
다중 스레딩은 하나의 프로세스를 여러 실행 흐름으로 나누어 동시에 처리하는 방식이고, 디버깅은 프로그램의 오류를 찾아 수정하는 작업이므로 자원 대기와는 관계가 없다.
MPEG-2는 HDTV, 위성방송, DVD 등 고화질 영상 전송을 위한 규격이고, MPEG-4는 통신·PC·방송을 아우르는 복합 멀티미디어 서비스의 표준이며, MPEG-21은 디지털 콘텐츠의 제작부터 유통, 보안까지 전 과정을 관리하는 기술이다.
반면 CD-I나 비디오CD처럼 CD급 매체에서 동영상을 재생하기 위해 제정된 규격은 MPEG-1이며, MPEG-7은 멀티미디어 콘텐츠를 검색하고 그 내용을 기술하기 위한 규격이므로 이 설명은 옳지 않다.
하나의 통신 회선의 대역폭을 일정한 시간 폭(Time Slot)으로 나누어 여러 단말기가 시간을 나누어 회선을 사용하도록 하는 방식은 시분할 다중화(TDM)이다.
FDM은 주파수 대역을 여러 개로 나누어 쓰는 방식, CDM은 서로 다른 코드로 신호를 구분하는 방식, SDM은 물리적으로 분리된 여러 회선(공간)을 나누어 쓰는 방식으로 시간 폭을 기준으로 나누는 방식과는 원리가 다르다.
설치된 하드웨어의 목록을 확인하거나 드라이버를 업데이트, 제거할 수 있는 창은 장치 관리자 창이다.
레지스트리 편집 창은 시스템 설정 값을 직접 수정하는 도구, 작업 관리자는 실행 중인 프로세스와 성능 상태를 확인하는 도구이며, 하드웨어 추가/제거 관련 항목은 새 장치를 설치할 때 사용하는 마법사이므로 설치된 하드웨어의 확인·제거 창으로는 장치 관리자가 옳다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 구분 | 매출액 | 매출액누계 | 구성비 |
| 2 | 1/4분기 | 23 | 23 | 3% |
| 3 | 2/4분기 | 237 | 260 | 35% |
| 4 | 3/4분기 | 288 | 548 | 42% |
| 5 | 4/4분기 | 135 | 683 | 20% |
| 6 | 합계 | 683 | 100% |
선택한 원본은 [A1:B5]의 매출액과 [D1:D5]의 구성비 두 계열이다. 매출액은 23, 237, 288, 135처럼 수백 단위의 값인 반면, 구성비는 3%, 35%, 42%, 20%로 0과 1 사이의 비율이다.
단위와 크기가 이렇게 다른 두 계열을 하나의 축에 함께 그리면 구성비 계열은 축 바닥에 붙어 사실상 보이지 않는다. 이런 경우 두 계열을 서로 다른 차트 종류로 나누고, 한쪽을 보조 축에 표시해 각자의 눈금으로 읽히게 해야 한다.
따라서 매출액은 세로 막대형, 구성비는 꺾은선형으로 그리면서 기본 축과 보조 축을 함께 사용하는 혼합형 차트가 가장 적합하다. 기본 축만 쓰는 혼합형이나 방사형, 원형 대 가로 막대형은 두 계열의 크기 차이 문제를 해결하지 못한다.

[찾기 및 바꾸기] 대화 상자의 [찾을 내용]에 입력하는 *는 임의의 여러 글자를, ?는 임의의 한 글자를 뜻하는 만능 문자(와일드카드)로 해석된다. 그래서 이 기호를 그대로 입력하면 '=A20*B21'을 찾아내지 못하고 엉뚱한 문자열이 대량으로 걸린다.
만능 문자를 기호 그 자체로 찾으려면 앞에 물결표(~)를 붙여야 한다. 즉 ~*, ~?로 입력하면 별표와 물음표가 일반 문자로 취급되어 곱셈 수식이나 의문문을 정확히 검색할 수 있다. 물결표 자체를 찾을 때는 ~~로 입력한다.
작은따옴표(')는 셀에 값을 문자열로 입력할 때 앞에 붙이는 기호이고, 큰따옴표(")는 수식 안에서 문자열을 묶는 기호일 뿐 찾을 내용에서 만능 문자의 기능을 해제하지 않는다. 참고로 이 대화 상자에서 [찾는 위치]를 '수식'으로 두어야 수식 자체를 대상으로 검색할 수 있다.
시나리오 요약 보고서는 저장된 시나리오 값을 한 페이지로 모아 비교하는 형태로 만들어지며, 이 보고서는 자동으로 다시 계산되지 않는다.
다만 시나리오를 작성할 때 변경 셀 상자에는 여러 개의 참조 셀을 지정할 수 있으므로, 하나의 참조 셀만 지정할 수 있다는 설명은 옳지 않다.

페이지 나누기 미리 보기 화면을 보면 [A1:I30] 영역이 굵은 파란 선으로 가로 2쪽, 세로 2쪽으로 잘려 1~4페이지가 매겨져 있다. 즉 열 방향(A~I)과 행 방향(1~30) 양쪽 모두에서 한 쪽 분량을 넘긴 상태다.
[페이지 설정]의 자동 맞춤은 지정한 용지 너비·용지 높이 쪽수에 맞춰 인쇄 배율을 자동으로 줄여 준다. 전체를 한 장에 담으려면 용지 너비를 1, 용지 높이도 1로 함께 지정해야 가로·세로가 동시에 한 쪽으로 축소된다.
둘 중 하나만 1로 지정하고 나머지를 비워 두면 그 방향만 한 쪽에 맞춰지고 다른 방향은 그대로 넘어가 2쪽으로 인쇄된다. 확대/축소 배율 100%는 현재 크기를 그대로 두는 설정이므로 4쪽이 그대로 유지된다.
| A | |
|---|---|
| 1 | |
| 2 | 컴활1급 |
| 3 | 컴퓨터일반 |
| 4 | 스프레드시트 |
| 5 | 데이터베이스 |
| 6 |
Range("A2:A5").Select
With Selection.Font
.Type = "돋움"
.Size = 11
End With
End Sub
워크시트의 [A2:A5] 범위에는 '컴활1급, 컴퓨터일반, 스프레드시트, 데이터베이스'가 입력되어 있고, 매크로는 이 범위를 선택한 뒤 글꼴을 바꾸도록 작성되어 있다. Range("A2:A5").Select로 범위를 선택하고 With Selection.Font ~ End With 블록 안에서 글꼴 속성을 한꺼번에 지정하는 구조 자체는 올바르다.
문제는 글꼴 이름을 지정한 .Type = "돋움" 부분이다. Font 개체에는 Type이라는 속성이 없으며, 글꼴 이름은 .Name 속성으로 지정해야 한다. 즉 .Name = "돋움"이라고 써야 '돋움' 글꼴이 실제로 적용된다.
나머지 구문은 정상이다. Range는 셀 범위를 참조하는 개체, Select는 그 범위를 선택하는 메서드이며 .Size = 11은 글꼴 크기를 11포인트로 지정한다. End With는 With 블록을 닫는 필수 구문이므로 잘못된 곳이 없다.
매크로 이름을 Auto_Open으로 지정하면 해당 매크로는 파일을 열 때마다 자동으로 실행되며, 매크로 실행 중에는 [Esc] 키로 중단할 수 있다. 매크로를 시작 위치와 무관하게 항상 정해진 셀에서 시작하려면 절대 참조로 기록해야 하고, 지정한 바로 가기 키가 엑셀 고유의 바로 가기 키와 겹치면 매크로에 지정된 바로 가기 키가 우선한다.
다만 매크로 대화상자를 열어 매크로를 실행할 때 사용하는 키는 [Alt]+[F8]이므로, [Ctrl]+[Shift]+[F8]로 매크로를 실행한다는 설명은 옳지 않다.
Sub ToZero()
ⓐ Counter = 1 To 20
Set curCell = Worksheets("Sheet1").ⓑ(Counter, ⓒ)
If ⓓ(curCell.Value) < 0.5 Then curCell.Value = 0
Next Counter
End Sub
Next Counter로 닫히는 반복 구조이므로 ⓐ에는 For가 들어가야 한다. For Counter = 1 To 20 ~ Next Counter 형태로 20번 반복하며 [C1:C20]의 각 셀을 차례로 훑는다. While은 Wend와 짝을 이루므로 Next와 함께 쓸 수 없다.
ⓑ와 ⓒ는 셀 하나를 참조하는 부분이다. 뒤에 (Counter, ⓒ)처럼 인수가 두 개 오므로 Cells 속성이며, Cells는 Cells(행 번호, 열 번호) 형식으로 인수를 모두 숫자로 받는다. 대상이 C열이므로 ⓒ에는 열 문자 C가 아니라 열 번호 3을 넣어야 한다. Range를 쓴다면 Range("C" & Counter)처럼 문자열 하나를 받는 형태가 되어 이 코드와 맞지 않는다.
ⓓ는 '절대값이 0.5보다 작은' 조건을 만드는 자리이므로 절대값을 구하는 Abs 함수가 와야 한다. Int는 소수점 이하를 버려 정수로 만드는 함수라 음수 판정이 어긋난다. 따라서 순서대로 For → Cells → 3 → Abs가 들어간다.

그림의 데이터 유효성 대화상자 [설정] 탭을 보면 유효성 조건이 제한 대상 정수, 제한 방법 해당 범위, 최소값 10, 최대값 20으로 지정되어 있다. 즉 [B2:B5]에는 10 이상 20 이하의 정수만 입력할 수 있다.
'해당 범위'는 최소값과 최대값을 포함하는 구간을 뜻하므로 경계값인 10과 20은 물론 그 사이의 15도 모두 정상적으로 입력된다. 반면 범위를 벗어나는 0은 조건을 만족하지 못해 입력이 거부되고 오류 메시지가 나타난다.
참고로 '공백 무시'가 체크되어 있어 셀을 비워 두는 것은 허용된다. 유효성 검사는 이미 입력된 값이 아니라 새로 입력하는 값에 대해 작동한다는 점도 함께 기억해 두면 좋다.
'실시간 미리 보기 사용'을 선택하면 옵션을 커서로 가리키기만 해도 그 기능이 적용되었을 때의 결과를 문서에 미리 보여 주고, '수식에 표 이름 사용'을 선택하면 범위의 행이나 열 레이블을 정의된 이름처럼 수식에 사용할 수 있으며, [저장] 메뉴에서는 통합 문서의 기본 저장 형식을 지정할 수 있다.
반면 '다른 문서에 대한 링크 업데이트'는 워크시트가 참조하는 외부 문서의 값을 갱신할지 결정하는 설정이고, 외부 링크로 가져온 결과 값의 복사본을 파일에 함께 보관하는 것은 '외부 링크 값 저장' 옵션이므로 이 설명은 옳지 않다.
차트, 도형, 그림, 워드아트, 클립아트, 괘선 등 워크시트에 삽입된 그래픽 요소를 제외하고 텍스트만 빠르게 인쇄하려면 [페이지 설정] 대화상자의 [시트] 탭에서 '간단하게 인쇄' 항목을 선택하면 된다.
'인쇄 영역 설정'은 인쇄할 셀 범위를 지정하는 기능이고, [인쇄] 대화상자의 [인쇄 대상]에서는 인쇄할 시트나 선택 영역·매수 등을 지정할 뿐 그래픽 요소를 빼고 인쇄하는 설정은 제공하지 않는다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | [표1] | |||
| 2 | 상품명 | 강서지점 | 강남지점 | 강북지점 |
| 3 | 건강보험 | 406,000 | 418,000 | 407,000 |
| 4 | 변액보험 | 391,000 | 735,000 | 404,000 |
| 5 | 신용대출 | 393,500 | 192,000 | 477,400 |
| 6 | 적금담보대출 | 272,000 | 482,000 | 269,000 |
| 7 | 주택예금 | 354,000 | 298,300 | 495,000 |
| 8 | ||||
| 9 | [표2] | |||
| 10 | 강서지점 | 강남지점 | 강북지점 | |
| 11 | 최대실적액 | 406,000 | 735,000 | 495,000 |
| 12 | ||||
| 13 | [표3] | |||
| 14 | 강서지점 | 강남지점 | 강북지점 | |
| 15 | 최대실적품명 | 건강보험 | 변액보험 | 주택예금 |
[표3]의 [B15]는 강서지점의 최대 실적 품명을 구하는 자리다. [표2]의 [B10:B11]에는 필드명 '강서지점'과 그 지점의 최대 실적액 406,000이 위아래로 놓여 있어, 그대로 조건 범위로 쓸 수 있는 형태다.
DGET 함수는 DGET(데이터베이스, 필드, 조건) 형식으로, 데이터베이스에서 조건에 맞는 레코드 하나를 찾아 지정한 필드의 값을 꺼낸다. 여기서 데이터베이스는 필드명 행을 포함한 $A$2:$D$7, 꺼낼 필드는 첫 번째 열인 '상품명'이므로 1, 조건은 B10:B11이다. 강서지점 값이 406,000인 레코드는 건강보험 행뿐이므로 결과는 건강보험이 되어 표와 일치한다.
나머지 함수는 인수 구조부터 맞지 않는다. INDEX는 (범위, 행 번호, 열 번호)로 위치를 지정해 값을 꺼내고, MATCH는 (찾을 값, 찾을 범위, 옵션)으로 위치 번호를 돌려주며, LOOKUP은 (찾을 값, 범위) 형태로 쓴다. 세 함수 모두 조건 범위를 인수로 받는 데이터베이스 함수가 아니어서 이 문제처럼 필드명과 값을 묶은 조건으로 검색할 수 없다.
수식 입력줄: =(B1+C1)-A1
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 100 | 200 | 300 | =(B1+C1)-A1 | |
| 2 |
워크시트에는 [A1]에 100, [B1]에 200, [C1]에 300이 들어 있고 [D1]에는 =(B1+C1)-A1 수식이 입력되어 있다. 이 상태에서 수식 입력줄의 (B1+C1) 부분만 블록으로 선택한 상황이다.
[F9] 키는 수식을 계산해 그 결과값으로 바꿔 주는 기능을 한다. 수식의 일부만 블록으로 선택했다면 선택한 부분만 계산되어 값으로 표시되므로, (B1+C1)이 200+300의 결과인 500으로 바뀌어 수식 입력줄은 =500-A1이 된다.
이때 [Esc]를 누르면 원래 수식으로 되돌아가지만, [Enter]로 확정하면 그 부분이 상수 500으로 굳어져 셀 참조가 사라진다. 아무것도 선택하지 않고 [F9]를 누르면 수식 전체가 계산되어 400이 되며, 참조를 (200+300)처럼 값의 형태로 나란히 표시해 주는 기능은 없다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 황영순 | 황 | 영순 | |
| 2 | 조자룡 | 조 | 자룡 | |
| 3 | 구재석 | 구 | 재석 | |
| 4 | 최영희 | 최 | 영희 |
[A1:A4]에는 '황영순, 조자룡, 구재석, 최영희'처럼 성과 이름이 붙어 있고, 결과인 [C1:D4]에는 성(황·조·구·최)과 이름(영순·자룡·재석·영희)이 나뉘어 들어가 있다. 원본 데이터에는 쉼표·탭·세미콜론 같은 구분 기호가 전혀 없고 오직 글자 수(첫 글자)로만 나뉜다.
따라서 텍스트 마법사 1단계에서는 '너비가 일정함'을 선택해야 하고, 2단계에서는 첫 글자 다음 위치를 마우스로 클릭해 열 구분선을 넣어 필드 너비를 지정한다. 구분 기호가 없는 데이터에 2단계에서 '구분 기호'의 '탭'을 선택하는 작업은 이 상황에 맞지 않는다.
마지막 3단계에서는 각 열의 데이터 서식을 정하고 '대상'에 결과가 들어갈 첫 셀인 =$C$1을 지정한다. 이렇게 하면 원본은 그대로 두고 나눈 결과만 [C1:D4] 영역에 표시된다.
차트를 작성하기 위해서는 원본 데이터를 선택한 후 ( ⓐ )키를 누르면 ( ⓑ )에 자동으로 차트가 생성되며, 별도로 설정하지 않았을 경우 기본 차트는 ( ⓒ )차트이다.
제시된 설명은 차트 작성 단축키와 기본 차트에 관한 내용이다. 원본 데이터를 선택한 뒤 [F11] 키를 누르면 대화상자를 거치지 않고 곧바로 차트가 만들어진다.
이때 차트는 데이터가 있는 워크시트 위에 개체로 놓이는 것이 아니라 새로운 차트 시트(Chart1)가 통합 문서에 삽입되고 그 시트 전체를 채우도록 생성된다. 워크시트 안에 개체 형태로 삽입하려면 [Alt]+[F1]을 사용한다.
또한 차트 종류를 따로 지정하지 않았다면 엑셀의 기본 차트인 묶은 세로 막대형으로 만들어진다. 따라서 빈칸에는 순서대로 [F11] → 새로운 차트 시트 → 묶은 세로 막대형이 들어간다.
REPLACE(A1,5,1,"")는 5번째 문자(두 번째 "-")를 삭제하는 수식으로, "TR-A80"이 정확히 만들어진다.
LEFT(A1,4)&RIGHT(A1,2)와 CONCATENATE(LEFT(A1,4),MID(A1,6,2))도 각각 앞 4글자 "TR-A"와 뒤 2글자 "80"을 이어붙여 "TR-A80"을 만들어내므로 결과가 옳다.
반면 SUBSTITUTE(A1,"-","",5)는 A1에서 다섯 번째로 나오는 "-"를 바꾸라는 뜻인데, A1에는 "-"가 두 개뿐이어서 다섯 번째 "-"가 존재하지 않는다. 따라서 아무 것도 바뀌지 않고 원래 값 "TR-A-80"이 그대로 표시되어 옳지 않은 결과가 나온다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 제품명 | 수량 | 단가 | 금액 |
| 2 | 디지털카메라 | 10 | 350,000 | |
| 3 | 전자사전 | 15 | 205,000 | |
| 4 | 모니터 | 20 | 155,000 | |
| 5 | 태블릿 | 5 | 550,000 |
시트에는 제품명·수량·단가가 [A1:C5]에 입력되어 있다(디지털카메라 10개 350,000원, 전자사전 15개 205,000원, 모니터 20개 155,000원, 태블릿 5개 550,000원). 금액 [D2:D5]를 배열 수식으로 한 번에 구하려는 상황이다.
여러 셀에 결과를 한꺼번에 채우는 배열 수식은 결과가 들어갈 [D2:D5]를 먼저 블록으로 선택한 뒤 =B2:B5*C2:C5처럼 범위 대 범위로 곱하는 식을 입력하고 [Ctrl]+[Shift]+[Enter]를 눌러야 한다. 그러면 각 셀에 중괄호가 붙은 {=B2:B5*C2:C5}가 표시되고, 같은 행끼리 짝지어 3,500,000 · 3,075,000 · 3,100,000 · 2,750,000이 채워진다.
=B2*C2 형태는 한 행만 계산하는 일반 수식이라 여러 셀을 한꺼번에 채우지 못하고, B2*C2:B5*C5 같은 표기는 올바른 범위 표기가 아니어서 오류가 난다. SUMPRODUCT는 두 배열을 곱한 뒤 모두 더해 하나의 합계를 돌려주므로 행별 금액을 각각 구하는 이 상황에는 맞지 않는다.
| A | B | C | |
|---|---|---|---|
| 1 | 자격증 응시 결과 | ||
| 2 | 응시자 | 과목 | 점수 |
| 3 | 강선미 | 1과목 | 80 |
| 4 | 2과목 | 85 | |
| 5 | 이수진 | 1과목 | 85 |
| 6 | 2과목 | 90 | |
| 7 | 김예린 | 1과목 | 80 |
| 8 | 2과목 | 95 | |
| 9 | |||
| 10 | 과목 | 평균 | |
| 11 | 1과목 | ||
| 12 | 2과목 | ||
표에서 점수는 [C3:C8]에 있고 3·5·7행이 1과목(80, 85, 80), 4·6·8행이 2과목(85, 90, 95)이다. [C11]은 바로 왼쪽 [B11]의 '1과목'에 대한 평균을 구하는 자리이므로 홀수 행의 점수만 골라 평균을 내야 한다.
ROW 함수는 범위 안 각 셀의 행 번호를 배열 {3;4;5;6;7;8}로 돌려준다. 따라서 MOD(ROW(C3:C8),2)=1이면 홀수 행인 3·5·7행만 TRUE가 되고, 이를 IF에 넣어 해당 점수만 남긴 뒤 AVERAGE로 평균을 구한 다음 [Ctrl]+[Shift]+[Enter]로 입력하면 {=AVERAGE(IF(MOD(ROW(C3:C8),2)=1,C3:C8))}가 되어 (80+85+80)/3 ≒ 81.7이 계산된다.
조건을 =0으로 바꾸면 짝수 행, 즉 2과목의 평균이 구해지므로 맞지 않는다. 또한 ROWS는 범위에 포함된 행의 개수(여기서는 6)를 하나의 값으로 돌려주는 함수여서 셀마다 홀·짝을 판별할 수 없고, MOD(6,2)=0이므로 조건이 항상 참이거나 항상 거짓이 되어 원하는 결과를 얻지 못한다.
부분합은 그룹화한 항목을 기준으로 정렬한 뒤, 각 그룹별로 합계·평균 등 요약값을 계산해 표시하는 기능이다. 오름차순이든 내림차순이든 정렬 방향에 따라 그룹이 나열되는 순서만 달라질 뿐, 각 그룹의 부분합 결과값 자체는 동일하다.
따라서 정렬 방향에 따라 그룹별 부분합의 결과가 서로 달라진다는 설명은 옳지 않다.
부분합을 작성하려면 첫 행에 열 이름표가 있어야 하고 그룹 기준 항목으로 정렬이 선행되어야 하며, 부분합을 제거하면 함께 삽입된 윤곽과 페이지 나누기도 모두 제거된다는 설명, '새로운 값으로 대치'를 해제하지 않고 실행하면 이전 부분합이 지워지고 마지막에 실행한 부분합만 남는다는 설명은 모두 옳다.




서식 코드 #"0,000"에서 큰따옴표로 묶인 부분은 문자 그대로 표시되는 리터럴이다. 따라서 1을 입력하면 #에 해당하는 1 뒤에 0,000이 그대로 붙어 10,000으로 나타난다. 입력자료와 결과가 올바르게 짝지어진 것은 이 경우다.
나머지는 결과가 어긋난다. 텍스트 자리를 뜻하는 @를 세 번 이어 쓴 @@@ 서식에 '컴활'을 입력하면 같은 문자열이 세 번 반복되어 컴활컴활컴활이 되며, @ 기호 자체가 화면에 찍히지는 않는다.
[<=1]0.0%;G/표준 서식은 값이 1 이하일 때 첫 번째 구역을 적용하므로 0.5에는 0.0% 서식이 쓰이는데, % 서식은 값에 100을 곱해 표시하므로 결과는 0.5%가 아니라 50.0%가 된다. 또 날짜 서식 mmm은 월을 영문 세 글자로 줄여 쓰므로 2012-03-01은 March-01이 아니라 Mar-01로 표시된다(March처럼 전체 이름으로 나타내려면 mmmm을 써야 한다).
Sub LocalVariable()
Dim strMsg As String
strMsg = "작업이 완료되었습니다."
MsgBox strMsg
End Sub
Sub OutsideScope()
MsgBox strMsg
End Sub
Dim으로 프로시저 안에서 선언한 변수는 지역 변수여서 선언된 프로시저 안에서만 유효하고, 프로시저가 끝나면 값이 사라진다. 코드의 strMsg는 LocalVariable 프로시저 안에서 Dim strMsg As String으로 선언되었으므로 그 프로시저 전용 변수다.
LocalVariable 프로시저는 strMsg를 문자열(String) 변수로 선언하고, 여기에 "작업이 완료되었습니다."를 대입한 뒤 MsgBox strMsg로 그 내용을 대화상자에 표시한다. 코드 세 줄이 각각 선언·대입·표시에 그대로 대응한다.
반면 OutsideScope 프로시저의 MsgBox strMsg에서 쓰인 strMsg는 LocalVariable의 변수와 아무 관계가 없는 별개의 이름이다. 모듈 선언부에 Option Explicit가 있으면 정의되지 않은 변수라는 컴파일 오류가 나고, 없으면 값이 비어 있는 Variant로 취급되어 빈 대화상자가 뜰 뿐 "작업이 완료되었습니다."는 표시되지 않는다. 두 프로시저에서 함께 쓰려면 모듈 선언부에 Private이나 Public으로 선언해야 한다.
InStr("I Have A Dream", "A")
InStr 함수는 InStr([시작 위치,] 대상 문자열, 찾을 문자열) 형태로, 대상 문자열 안에서 찾을 문자열이 처음 나타나는 위치를 숫자로 돌려준다. 찾지 못하면 0을 반환한다.
Access의 모듈은 기본적으로 Option Compare Database가 적용되어 문자열을 비교할 때 대소문자를 구분하지 않는다. 따라서 찾을 문자 "A"는 대문자 A뿐 아니라 소문자 a와도 일치한다.
"I Have A Dream"을 앞에서부터 한 글자씩 세면 I가 1, 공백이 2, H가 3, a가 4이다. 대소문자를 구분하지 않으므로 Have의 소문자 a가 있는 4번째 위치가 먼저 검색되어 결과 값은 4가 된다. 만약 대소문자를 구분하는 비교(Option Compare Binary)라면 대문자 A가 놓인 8번째 위치가 반환된다.

학생 테이블은 학번, 이름, 성별, 생년월일, 연락처로 이루어져 있으므로 생일이 든 날짜 필드는 생년월일이다. 월별 집계를 하려면 이 필드에서 month() 함수로 월만 뽑아내어 그 값으로 묶어야 한다.
month(*)처럼 함수 인수 자리에 별표를 쓰면 날짜 값이 전달되지 않아 성립하지 않는다. 또 인원수는 값을 더하는 sum이 아니라 레코드 개수를 세는 count로 구해야 하므로 count(*)가 맞다. sum(생년월일)은 날짜를 합산하는 무의미한 식이 된다.
group by 절도 select 절의 그룹 기준과 같은 month(생년월일)이어야 한다. group by 생년월일로 묶으면 같은 달이라도 날짜가 다르면 서로 다른 그룹이 되어 월별이 아니라 날짜별 집계가 나온다. 따라서 select month(생년월일) as 월, count(*) as 생일자수 from 학생 group by month(생년월일) 이 옳은 레코드 원본이다.
보고서 머리글은 보고서 전체에서 딱 한 번, 첫 페이지 상단에만 표시되는 구역이다. 로고나 보고서 제목처럼 첫머리에 한 번만 나오면 되는 항목을 넣는 곳이며, 매 페이지마다 반복해서 표시되는 것이 아니다.
매 페이지마다 반복 표시되는 항목(페이지 번호, 출력 날짜 등)은 페이지 머리글이나 페이지 바닥글에 넣는다.
보고서 바닥글에 합계·개수 등 요약 정보를 표시할 수 있다는 설명과, 그룹 머리글에 그룹명이나 그룹별 합계를 표시할 수 있다는 설명은 모두 옳다.
거래처별로 순번(1,2,3…)을 매기려면 컨트롤 원본을 값이 아닌 식으로 지정해야 하므로 '=1'로 설정해야 한다. 단순히 '1'만 입력하면 상수가 되어 계산식으로 동작하지 않는다.
누적합계 속성은 전체 레코드에 대해 계속 누적할지, 그룹이 바뀔 때마다 다시 1부터 시작할지를 결정한다. 거래처(그룹)가 바뀔 때마다 순번이 다시 1부터 매겨져야 하므로 누적합계는 '그룹'으로 설정해야 한다.
누적합계를 '아니오'로 두면 매 레코드마다 값이 1로 고정되고, '모두'로 설정하면 그룹 구분 없이 보고서 전체에서 계속 누적되어 원하는 결과가 나오지 않는다.
특정 조건을 만족하는 레코드의 개수를 구하는 도메인 함수는 DCOUNT이며, 값을 하나 가져오는 DLOOKUP과는 용도가 다르다.
DCOUNT 함수는 =DCOUNT(집계할 필드, 도메인(테이블/쿼리), 조건) 형태로 사용하며, 필드명·테이블명·조건식은 모두 큰따옴표로 묶어 문자열로 지정해야 한다. 개수를 셀 때는 특정 필드 대신 "*"를 사용할 수 있다.
=dcount("*","학생","학년=2")는 이 형식을 정확히 따르고 있어 '학년' 필드가 2인 레코드 수를 올바르게 계산한다.
MsgBox는 매크로나 VBA에서 사용자에게 메시지를 대화상자로 화면에 표시해 정보를 전달하는 기능이다.
SetValue는 컨트롤이나 속성 값을 설정하는 동작이고, TransferText는 텍스트 파일을 가져오거나 내보내는 동작이며, Beep는 경고음을 내는 동작으로, 모두 화면에 정보를 표시하는 기능은 아니다.
기본 키는 각 레코드를 고유하게 식별해야 하므로 중복된 값이나 Null 값이 입력되어서는 안 되며, OLE 개체·메모·첨부 파일 등의 데이터 형식은 기본 키로 지정할 수 없다.
다른 테이블에서 참조(외래 키로 사용)되고 있더라도 기본 키 값 자체가 기술적으로 절대 변경 불가능한 것은 아니다. 참조 무결성이 설정된 경우 연쇄 업데이트 등을 통해 관련 값이 함께 갱신될 수 있으므로, "변경되어서는 안 된다"고 단정하는 설명은 옳지 않다.
E-R(개체-관계) 모델은 데이터베이스의 개체와 개체 간의 관계를 개념적으로 표현한 모델이다.
E-R 다이어그램에서 사각형은 개체(Entity) 타입을, 타원은 속성(Attribute)을 나타낸다. 문제의 설명은 이를 반대로 서술하고 있어 옳지 않다.
E-R 모델에서 정의된 개체는 관계형 데이터베이스로 옮길 때 테이블로, 속성은 필드로 변환된다는 설명은 옳다.
폼은 데이터 입력과 편집을 위한 사용자 인터페이스이며, 바운드 폼과 언바운드 폼으로 구분된다.
폼의 레코드 원본으로는 테이블뿐만 아니라 쿼리나 SQL문도 지정할 수 있으므로, 원본이 테이블만 가능하다는 설명은 옳지 않다.
여러 테이블을 원본으로 하는 폼(하위 폼 포함)을 이용하면 관련된 여러 테이블에 한 번에 데이터를 입력할 수도 있다.

Me.FilterOn=True
Me.FilterOn=False
Me.FilterOn=True
Me.FilterOn=False
그림의 '학과 정보 관리' 폼은 위쪽 학과명 입력란(txt조회)에 "비서"를 넣고 [조회] 단추를 누른 결과다. 목록에는 비서행정과(경인여자대학 130), 비서과(동원대학 40), 국제비서과(상공대학 40), 비서경영전공(용인송담대학 62), 비서과(수원여자대학 43), 비서행정과(수원과학대학 30)처럼 학과명 안에 '비서'가 들어 있기만 하면 표시되고, 아래 탐색 줄에는 '필터링됨'이 나타난다.
이렇게 일부 문자를 포함하는 조건은 만능 문자 *를 함께 쓰는 Like 연산자로만 지정할 수 있다. Me.Filter="학과명 like '*"& txt조회& "*'" 로 작성하면 앞뒤에 어떤 글자가 붙어도 입력한 문자가 포함된 레코드가 걸린다. 등호(=)로 비교하면 학과명이 '*비서*'라는 문자열과 정확히 같은 레코드만 찾으므로 결과가 하나도 나오지 않는다.
또 Filter 속성에 조건 문자열을 넣는 것만으로는 화면에 반영되지 않는다. Me.FilterOn=True로 필터를 켜야 조건이 적용되며, False로 두면 필터가 해제되어 그림처럼 걸러진 목록이 아니라 전체 레코드가 그대로 보인다.
보고서의 레코드 원본으로는 테이블, 저장된 쿼리, SQL문, 심지어 외부 엑셀 파일과 연결된 테이블까지 다양하게 지정할 수 있다.
다만 보고서는 데이터를 보여주고 인쇄하기 위한 조회 전용 개체이다. 보고서 화면에서 값을 수정하더라도 그 내용이 원본 테이블에 반영되지는 않으므로, 테이블에 반영된다는 설명은 옳지 않다.
레코드 원본으로 저장된 쿼리를 사용하는 경우 쿼리가 바뀌면 그 변경 내용이 반영되어 보고서가 작성된다는 설명은 옳다.
하위 쿼리는 다른 쿼리 내부에 포함된 SELECT문으로, SELECT문의 필드 목록이나 WHERE·HAVING 절에서 식 대신 사용할 수 있다.
주 쿼리에서 IN을 사용하면 하위 쿼리 결과 중 일치하는 값이 있는 레코드를 검색할 수 있고, ALL을 사용하면 하위 쿼리에서 검색된 모든 값과 비교 조건을 만족하는 레코드만 검색할 수 있다.
하위 쿼리가 반환하는 값이 하나뿐이라도 이를 사용하는 것은 등호(=)나 부등호 같은 비교 연산자이며, ON은 조인 조건을 지정할 때 쓰는 연산자이므로 하위 쿼리와는 관련이 없다. 따라서 이 설명은 옳지 않다.
크로스탭 쿼리는 행과 열 방향의 표 형태로 데이터를 집계하며, 합계·평균·개수 같은 요약값을 계산해 보여줄 수 있다.
요약 행을 '조건'으로 지정하고 크로스탭 항목은 비워둔 채 조건식을 입력하면, 그 필드는 결과에 표시되지 않으면서 레코드를 걸러내는 용도로만 쓰인다.
다만 행 머리글(행 방향 그룹)은 여러 필드를 지정할 수 있는 반면, 열 머리글(열 방향 그룹)은 하나의 필드만 지정할 수 있다. 문제의 설명은 이를 반대로 서술하고 있어 옳지 않다.

<A화면>은 M001(부천제과·부천·한가영), M002(선우식품·서울·이기동), M003(길용식품·인천·양성식) 세 레코드가 나올 때마다 '제조업체번호 / 제조업체명 / 소재지 / 대표명'이라는 제목이 레코드마다 반복되어 나타난다. <B화면>은 같은 제목이 목록 맨 위에 한 번만 나오고 그 아래로 세 레코드가 이어진다.
두 화면 모두 여러 레코드를 한 화면에 죽 나열하는 연속 폼 형태이므로 기본 보기 속성 자체는 잘못되지 않았다. 단일 폼으로 바꾸면 레코드가 한 건씩만 보여 B화면 모양이 되지 않는다.
연속 폼에서 본문(세부 구역)에 놓인 컨트롤은 레코드 수만큼 되풀이해 출력된다. 필드 이름을 나타내는 레이블이 본문에 들어 있어서 제목이 반복된 것이므로, 레이블만 폼 머리글로 옮기면 제목은 위쪽에 한 번만 표시되고 값이 담긴 텍스트 상자는 본문에 남아 레코드마다 반복된다. 반대로 텍스트 상자를 머리글로 옮기면 실제 데이터가 한 건만 보이게 되어 목록이 만들어지지 않는다.
액세스의 필드 크기(바이트 수)는 데이터 형식에 따라 정해진다. 정수(Long, Long Integer)는 4바이트를 차지하며, 날짜/시간과 통화는 각각 8바이트, 복제 ID(GUID)는 16바이트를 차지한다.
따라서 제시된 형식 중에서는 정수(Long)가 차지하는 바이트 수가 가장 작다.
| 형식 | 통화 |
| 소수자릿수 | 자동 |
| 입력마스크 | |
| 캡션 | |
| 기본값 | 2500 |
| 유효성 검사 규칙 | between 2000 AND 30000 |
| 유효성 검사 메시지 |
제시된 필드 속성은 형식이 통화, 소수 자릿수는 자동, 기본값은 2500이며 핵심인 유효성 검사 규칙이 between 2000 AND 30000으로 설정되어 있다. 유효성 검사 메시지 칸은 비어 있다.
Between A And B는 'A 이상 B 이하'를 뜻하는 연산자로 양쪽 경계값을 포함한다. 즉 허용 범위는 2000부터 30000까지이며 2000과 30000 자신도 정상 값이다.
입력한 30000은 규칙의 상한과 같은 값이므로 조건을 만족한다. 따라서 아무런 오류 없이 정상적으로 입력된다. 참고로 규칙을 벗어나는 값을 넣었을 때에는 유효성 검사 메시지가 비어 있으면 Access가 정한 표준 오류 메시지가 대신 표시되며, 메시지 칸이 비었다고 해서 규칙 설정이 잘못된 것은 아니다.

그림의 '종목별 특기생 목록' 보고서는 A012 사이클(감독 허석철), A013 축구(감독 임홍현), A014 탁구(감독 양영자) 순으로 묶여 있다. 묶음이 바뀔 때마다 종목코드·종목명·감독명과 학번·성명·성별·키·몸무게·생년월일 열 제목이 다시 나오고, 묶음 끝에는 '종목별인원: 1', '종목별인원: 3', '종목별인원: 6'이 찍힌다. 즉 그룹 머리글과 그룹 바닥글이 설정된 구조다.
묶음의 배열 순서는 사이클 → 축구 → 탁구로 종목명 오름차순이고, 한 묶음 안의 레코드는 축구가 10005·10041·10044, 탁구가 10008·10009·10011·10028·10031·10036으로 학번 오름차순이다. 반면 성명은 오름차순도 내림차순도 아니어서 정렬 기준이 될 수 없다.
따라서 종목명, 학번 순으로 오름차순 정렬하고 바깥쪽 기준인 종목명으로 그룹화해야 이 보고서가 만들어진다. 학번으로 그룹화하면 학생 한 명마다 그룹이 생겨 종목별 인원 합계를 낼 수 없다.
입력 마스크는 세미콜론(;)으로 구분된 세 구역으로 이루어지며, 첫 번째 구역에서 사용자 정의 기호로 입력 형식을 지정하고, 세 번째 구역에서는 데이터가 입력될 자리에 표시할 문자를 지정한다.
두 번째 구역은 입력 마스크에 사용된 서식 문자(하이픈, 괄호 등 리터럴 문자)를 데이터와 함께 저장할지를 결정한다. 이 값이 '0'이면 입력한 값과 서식 문자를 함께 저장하고, '1'이거나 비워두면 서식 문자 없이 입력한 값만 저장한다.
즉 '0'일 때 서식 문자를 제외한 입력값만 저장한다는 설명은 반대로 서술된 것이므로 옳지 않다.
DBMS의 기능은 크게 정의 기능, 조작 기능, 제어 기능으로 나뉜다. 이 중 제어 기능은 데이터의 무결성 유지, 병행 제어(동시 접근 처리), 보안 및 권한 검사 등을 통해 데이터를 안전하고 정확하게 관리하는 기능을 말한다.
갱신·삽입·삭제 작업이 정확히 수행되어 무결성이 파괴되지 않도록 하는 것, 여러 사용자의 동시 접근을 위한 병행 제어, 보안과 권한 검사를 정의하는 것은 모두 제어 기능에 해당한다.
반면 데이터의 검색·갱신·삽입·삭제가 체계적으로 이뤄지도록 데이터 접근 수단을 제공하는 것은 사용자와 데이터베이스 사이의 인터페이스를 담당하는 조작 기능의 역할이다. 이를 제어 기능으로 설명하고 있으므로 옳지 않다.