프로그래밍의 기초(의사 코드 트레이스)
일본 기본정보기술자시험 과목 B와 같은 형식의 의사 코드로 쓴 짧은 프로그램을 1행씩 따라가며 결과를 구하는 객관식 문제로 학습합니다. 대입과 변수, 반복과 조건 분기, 배열과 문자열, 정수의 나눗셈과 나머지, 재귀 호출, 비트 연산, 스택과 큐, 연결 리스트, 오프 바이 원 오류, 단락 평가, 실수의 오차, 클래스와 인스턴스를 다룹니다.
—내 정답률
0 / 40푼 문제 수
프로그래밍의 기초(의사 코드 트레이스): 핵심 정리
프로그램의 동작을 정확히 읽으려면 변수의 값이 1행마다 어떻게 바뀌는지를 직접 손으로 따라가는(트레이스하는) 능력이 꼭 필요합니다. 반복 횟수를 하나 잘못 세거나, 대입 순서 때문에 값을 잃거나, 정수 나눗셈에서 소수점 이하가 버려지는 것을 놓치는 등의 작은 실수가 잘못된 결과나 버그의 원인이 됩니다.
일본 기본정보기술자시험 과목 B에서 사용하는 의사 코드(형의 선언, ←에 의한 대입, if·while·for, 1부터 시작하는 배열의 인덱스 등)를 따라 쓴 짧은 프로그램을 트레이스하고 결과를 답하는 문제를 중심으로 학습합니다. 오답 선택지는 종료값의 혼동이나 연산자 우선순위의 오해 등 전형적인 실수에서 생기는 값으로 되어 있으며, 해설에서는 각 선택지가 어떤 실수에서 나왔는지를 설명합니다.
프로그래밍의 기초(의사 코드 트레이스) 전체 문제 (40)
- 다음 프로그램에서 x와 y의 값을 교환할 생각으로 대입문 2개를 작성했다. 실행한 후의 x와 y의 값의 조합은?
- 세 변수의 값을 차례로 보내는 다음 프로그램을 실행한 후의 a, b, c의 값의 조합은?
- x를 3배 하는 것을 반복하는 다음 프로그램을 실행한 후의 n의 값은?
- i를 2씩 늘리는 다음 for 문을 실행한 후의 s의 값은?
- 안쪽 반복의 초기값이 바깥쪽 변수 i로 정해지는 다음 이중 루프를 실행한 후의 c의 값은?
- 이중 루프 안에 조건 분기가 있는 다음 프로그램을 실행한 후의 c의 값은?
- 배열 a의 모든 요소의 합계를 구할 생각으로 다음 프로그램을 작성했다. 배열의 인덱스는 1부터 시작한다. 실행한 후의 s의 값은?
- 배열의 인덱스는 1부터 시작한다. 최대 요소를 찾는 다음 프로그램을 실행한 후의 m의 값은?
- 배열 a의 요소를 역순으로 뒤집을 생각으로 다음 프로그램을 작성했다. 배열의 인덱스는 1부터 시작한다. 실행한 후의 a의 내용은?
- 배열의 인덱스는 1부터 시작한다. 다음 프로그램을 실행한 후의 배열 a의 내용은?
- 배열의 인덱스는 1부터 시작한다. 이웃한 요소를 비교하는 다음 프로그램을 실행한 후의 c의 값은?
- m[i, j]는 2차원 배열 m의 i행 j열의 요소를 나타내며, 인덱스는 1부터 시작한다. 다음 프로그램을 실행한 후의 s의 값은?
- 4행 5열의 2차원 배열 m의 요소를 다음 프로그램으로 요소 수 20인 배열 b로 옮긴다. m[i, j]는 i행 j열의 요소를 나타내며, 인덱스는 1부터 시작한다. m[3, 2]가 대입되는 b의 인덱스는?
- 배열의 인덱스는 1부터 시작하며, +는 문자열을 연결한다. 다음 프로그램을 실행한 후의 r의 값은?
- 다음 함수 isPal은 문자열형 배열 s의 문자 순서가 앞에서 읽어도 뒤에서 읽어도 같으면(회문) true를 반환한다. 배열의 인덱스는 1부터 시작한다. 프로그램 중의 【a】에 들어갈 것은?
- ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 f를 f(9087)로 호출했을 때의 반환값은?
- ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 toBin을 toBin(12)로 호출했을 때의 반환값은?
- 두 정수 a, b를 뺄셈으로 같게 만들어 가는 다음 프로그램을 실행한 후의 k의 값은?
- 다음 함수 isLeap은 서기 y년이 윤년이면 true를 반환한다. and는 or보다 먼저 계산한다. isLeap(y)가 true를 반환하는 y는?
- ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 pow를 pow(2, 10)으로 호출했을 때, pow가 호출되는 횟수(최초 호출 포함)는?
- 다음 함수 s를 s(7)로 호출했을 때의 반환값은?
- 다음 프로시저 p를 p(3)으로 호출했을 때, 출력되는 값의 순서는?
- 다음 함수 fib를 fib(10)으로 호출했을 때의 반환값은?
- 다음 함수 c를 c(4, 2)로 호출했을 때, c가 호출되는 횟수(최초 호출 포함)는?
- ⊕는 비트별 배타적 논리합을 나타낸다. 다음 프로그램을 실행한 후의 x와 y의 값의 조합은?
- x와 y는 8비트 부호 없는 정수라고 한다. <<와 >>는 논리 시프트이며, 빈 비트에는 0이 들어가고 8비트를 넘친 비트는 버린다. ∨는 비트별 논리합을 나타낸다. 다음 프로그램을 실행한 후의 y의 값은?
- ∧는 비트별 논리곱을 나타낸다. 다음 프로그램을 실행한 후의 c의 값은?
- x와 y는 8비트 부호 없는 정수라고 한다. <<와 >>는 논리 시프트이며, 빈 비트에는 0이 들어가고 8비트를 넘친 비트는 버린다. ∨는 비트별 논리합을 나타낸다. x가 75일 때, 다음 대입을 실행한 후의 y의 값은?
- 다음 프로시저 bubble은 정수형 배열 data를 오름차순으로 정렬하는 버블 정렬이다. swap(data, j, k)는 data[j]와 data[k]의 값을 교환하는 프로시저이며, 배열의 인덱스는 1부터 시작한다. 프로그램 중의 【a】에 들어갈 것은?
- ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 프로그램은 오름차순으로 정렬된 정수형 배열 data(인덱스는 1부터 시작)에서 x 이상인 값이 처음 나타나는 인덱스를 lo에 구한다. x는 data의 마지막 요소 이하라고 한다. 프로그램 중의 【a】에 들어갈 것은?
- 요소 수 5인 정수형 배열 st와 정수형 변수 top으로 스택을 나타낸다. st의 요소는 모두 0, top은 0에서 시작한다. push(v)는 top에 1을 더한 후 st[top] ← v를 수행하고, pop()은 st[top]의 값을 반환한 후 top에서 1을 뺀다(st의 요소는 바꾸지 않는다). 다음 프로그램을 실행한 후의 top과 st의 조합은?
- 요소 수 4인 문자열형 배열 q를 원형으로 사용하는 큐가 있다. head와 tail의 초기값은 1이며, enq(v)는 q[tail] ← v 다음에 tail ← tail mod 4 + 1을 수행하고, deq()는 q[head]의 값을 반환한 다음에 head ← head mod 4 + 1을 수행한다. 다음 프로그램을 실행했을 때 "E"가 저장되는 q의 요소는?
- 다음 프로그램은 배열 next로 요소끼리 연결한 연결 리스트를, 인덱스 1인 요소부터 차례로 따라가며 출력한다. 배열의 인덱스는 1부터 시작한다. next의 값 0은 리스트의 끝을 나타낸다. 출력되는 값의 순서는?
- 다음 프로그램은 배열 next로 연결한 연결 리스트 A → C → E → D → B의 "C"(인덱스 3) 바로 뒤에 val[6]의 "F"를 삽입한 다음, 인덱스 1인 요소부터 차례로 따라가며 출력한다. 배열의 인덱스는 1부터 시작한다. next의 값 0은 리스트의 끝을 나타낸다. 출력이 A, C, F, E, D, B가 되도록 【a】에 넣을 처리는?
- 제어 변수를 5씩 늘리는 다음 for 문을 실행한 후의 c의 값은?
- 다음 프로그램의 and는 왼쪽 식이 false일 때는 오른쪽 식을 평가하지 않는다(단락 평가). cnt는 전역 변수이다. 실행한 후의 cnt의 값은?
- 요소 수 n인 배열 a에서 값 x를 찾아, 찾은 인덱스를 i에 구하는 다음 프로그램이 있다. 배열의 인덱스는 1부터 시작한다. and와 or는 왼쪽 식만으로 결과가 정해질 때는 오른쪽 식을 평가하지 않는다. 【a】에 넣을 조건식 중, x가 a 안에 없을 때 범위 밖의 a[n + 1]을 참조해 버리는 것은?
- 실수형 값은 IEEE 754 배정밀도(binary64)로 나타내며, 덧셈 결과는 가장 가까운 표현 가능한 값으로 반올림한다. 다음 프로그램을 실행한 후의 c의 값은?
- 클래스 Counter는 인스턴스마다 정수형 멤버 변수 count(생성 시 0)를 가지며, 메서드 inc()는 자신의 count에 1을 더한다. 다음 프로그램을 실행한 후의 x의 값은?
- 클래스 Counter는 인스턴스마다 정수형 멤버 변수 count(생성 시 0)를 가지며, 메서드 inc()는 자신의 count에 1을 더한다. Counter형 변수에는 인스턴스 자체가 아니라 인스턴스에 대한 참조가 들어간다. 다음 프로그램을 실행한 후의 x의 값은?
컴퓨터 시스템의 다른 분야
- 컴퓨터 산술 IEEE 754, 고정소수점, 반올림 오차
- 확률·통계와 대기행렬 경우의 수·확률 분포·추정과 검정·M/M/1
- ISA와 어셈블리 RISC-V, 주소 지정 방식, 호출 규약
- 컴파일러 구문 분석, SSA, 최적화, 레지스터 할당
- 링커, 로더, 실행 파일 ELF, 심벌 해석, 재배치, 동적 링킹
- OS와 하드웨어 인터럽트, 시스템 콜, 페이지 폴트
- Linux와 커맨드 라인 기초 셸·권한·파이프·스크립트
- 메모리 계층 구조 캐시, 교체 정책, 세 가지 미스
- 멀티코어와 동기화 MESI, 원자적 명령어, 메모리 배리어
- GPU 프로그래밍 워프, 공유 메모리, 병합 접근, 점유율
- AI 하드웨어·소프트웨어 스택 추론과 학습, 양자화, 루프라인 모델
- 머신러닝의 기초 학습의 종류·평가 지표·신경망
- 임베디드 시스템과 펌웨어 GPIO, UART/SPI/I2C, RTOS
- HDL과 검증 Verilog, 래치, 상태 머신, 테스트벤치
- I/O 인터페이스와 버스 PCIe, USB, SerDes, CXL
- 네트워크 기초 TCP/IP, 서브넷 계산, DNS, TLS
- 웹 기술 기초 HTTP·Cookie·REST·CORS·캐시
- 무선 통신의 기초 변조·OFDM·MIMO·RF 회로
- 정보 보안 기초 암호, 인증, 웹 공격과 대책
- 데이터베이스 기초 SQL, 정규화, 트랜잭션
- 자료 구조와 알고리즘 시간 복잡도, 탐색, 정렬, 그래프
- C 언어 기초 포인터·메모리·미정의 동작
- 소프트웨어 개발과 프로젝트 관리 개발 프로세스, 테스트, 일정·비용 관리
- 경영 전략과 회계의 기초(전략 분야) 회계, 손익분기점, 경영 전략, 마케팅
- 서비스 관리와 시스템 감사 SLA·인시던트와 문제·감사와 내부 통제
- 시스템 구성과 신뢰성 설계 이중화·RAID·백업·클라우드
- 성능 분석 암달의 법칙, CPI, 병목
- 하드웨어 보안 사이드 채널, 시큐어 부트, TEE, PUF
- 전력 관리 DVFS, 파워 게이팅, 슬립 상태