본문 바로가기

개발/정보처리기사

[수제비 출처] 2020년 기사 실기 출제예상 문제[Daily 101-76번] - 헷깔리는 문제들만

헷깔리는 문제만 수록


101. 다음은 성적 테이블이다. IN 키워드를 이용하여 '컴퓨터 구조'와 '알고리즘' 과목에 대한 학번 별 평균 학점을 구하는 쿼리를 작성하시오.

<성적> 테이블

학번 과목 학점
2001
2001
2002
2003
2003
컴퓨터 구조
운영체제
알고리즘
컴퓨터 구조
알고리즘
4.5
4.0
4.5
3.5
2.5

<결과>

학번 평균
2001
2002
2003
4.5
4.5
3.0

​정답)

SELECT 학번, AVG(학점) as 평균

FROM 성적

WHERE 과목 IN ('컴퓨터 구조', '알고리즘')

GROUP BY 학번;

참고) 수제비 정보처리기사 실기 8-25, 11-36페이지

추가 설명) AVG(학점) AS 평균 -> AS는 이름을 대체한다는 의미로 AVG(학점)이라는 컬럼명을 평균이라는 컬럼명으로 변경한다는 의미입니다.


102. 다음 프로그램의 실행 결과를 쓰시오.

//"Hello World" 문자열을 string 변수에 저장한다 >>>string="Hello World" //string[0:3] 에서 "Hel" //string[-3:]에서 "rld" 를 가져와서 // '+' 연산자에서 두 문자열을 합친 결과를 m에 저장 >>>m=string[0:3] + string[-3:] // 결과 출력 >>>print(m)

답) Helrld

해설) 정보처리기사 필기 3회시험 74번 문제 변형

slice를 이용하여 문자열에서 부분 문자열을 가져올 수 있다.

사용방법은 '문자열[시작:끝]' 이다.

string[3:] 이라고 하면 3번째 부터 끝까지 부분 문자열을 반환한다.

string[0:3] 이라고 하면 처음부터 3번째까지 반환한다.

string[:] 라고 하면 처음부터 끝까지 전부 반환 한다.

string[-3:] 라고 하면 문자열의 끝에서 역방향 3번째까지 반환한다.

 

slice는 리스트에서도 사용이 가능하다.

>>>list = [0,1,2,3,4,5] >>>list = list[1:4] >>>print(list) [1,2,3]


100. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.

a = {'일본', '중국', '한국'} a.add('베트남') a.add('중국') a.remove('일본') a.update({'홍콩', '한국', '태국'}) print(a)

정답) {'중국', '한국', '베트남', '홍콩', '태국'}

※ 참고로 집합형이기 때문에 순서는 상관없습니다.

해설)

* 소스코드 상세 설명

① a = {'일본', '중국', '한국'} a라는 세트(집합) 데이터 타입에 '일본', '중국', '한국'이라는 값이 초기화
여기서 print(a)를 하면 {'일본', '중국', '한국'}
② a.add('베트남') a라는 세트 데이터 타입에 '베트남'을 추가
여기서 print(a)를 하면 {'일본', '중국', '한국', '베트남'}
③ a.add('중국') a라는 세트 데이터 타입에 '중국'을 추가해야 하지만, 기존에 값이 있으므로 무시
여기서 print(a)를 하면 {'일본', '중국', '한국', '베트남'}
④ a.remove('일본') a라는 세트 데이터 타입에서 '일본'을 제거
여기서 print(a)를 하면 {'중국', '한국', '베트남'}
⑤ a.update({'홍콩', '한국', '태국'}) update의 경우 값이 존재할 경우 기존에 값이 있으면 그대로 두고, 기존에 값이 없으면 추가한다.
a라는 세트 데이터 타입에서 '홍콩', '태국'이 없으므로 '홍콩', '태국'을 추가한다.
⑥ print(a) print(a)를 하면 {'중국', '한국', '베트남', '홍콩', 태국'}

추가설명)

파이썬 타입에는 크게 4종류가 있습니다.

자료형 설명 문법 및 사용 예시
리스트형 리스트 안에는 어떠한 자료형도 포함시킬 수 있습니다. 리스트명 = [요소1, 요소2, ...]

예) test = [1, 2, '한국']
튜플형 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없는 특성을 제외하고는 리스트형과 거의 비슷합니다. 튜플명 = (요소1, 요소2, ...)

예) test = (1, 2, '한국')
세트형 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형입니다. 세트명 = set([요소1, 요소2, ...]) 또는 세트명 = {요소1, 요소2, ...}

예) a = {'일본', '중국', '한국'}
딕셔너리형 대응 관계를 나타내는 자료형입니다. 딕셔너리명 = {키1:값1, 키2:값2, ...}
예) test = {1:"가", 2:"나", ...}

여기서 추가로 알아볼 것은 세트형(Set형; 집합형)입니다.

set형에는 remove, add, update 함수 등이 있습니다.

세트에 사용되는 함수 설명
remove 특정 값 제거(원래 세트에 값이 없을 경우 무시)
add 값 1개를 추가(중복값은 무시)
update 값 여러개를 추가(중복값은 무시)


[출처] [2020년 제2회 기사 실기 문제] (10과목) 프로그래밍 언어 활용 - 100 (수제비-NCS 기반 정보처리기사, 산업기사, 기능사 커뮤니티) | 작성자 두음쌤

 

수제비-NCS 기반 정보처리기사, 산... : 네이버 카페

수제비-수험생 입장에서 제대로 쓴 비법서 (정보처리기사, 정보처리기능사 등 시리즈 수험서)

cafe.naver.com

 


98. 다음은 학생 테이블이다. '이'씨 성을 가진 사람의 학번을 출력하는 쿼리를 작성하시오.

<학생>

학번 이름
2001
2002
2003
2004
2005
2006
안창호
김정호
김유신
허준
이성계
이순신

<결과>

학번
2005
2006

정답)

SELECT 학번

FROM 학생

WHERE 이름 LIKE '이%';

참고) 수제비 정보처리기사 실기 11-35

해설) LIKE 문에 대한 추가 설명

• 속성명 LIKE '찾을 문자열'

ex) '이'로 시작하는 사람 검색 => WHERE 이름 LIKE '이%';

ex) '이'로 끝나는 사람 검색 => WHERE 이름 LIKE '%이';

ex) '이'가 들어가는 사람 검색 => WHERE 이름 LIKE '%이%';

ex) '이'로 시작되고 '이' 뒤에 1글자만 있는 사람 검색 => WHERE 이름 LIKE '이_';

ex) '이'로 시작되고 '이' 뒤에 2글자만 있는 사람 검색 => WHERE 이름 LIKE '이__';

ex) '이*신'이라는 사람 검색 => WHERE 이름 LIKE '이_신';

=> 정리하면 '%'는 글자수 상관없이 찾기, '_'는 1글자 찾기('%', '_'를 와일드 카드라고 부릅니다.)

 


89. 다음은 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도인 결합도의 유형이다. 괄호 (   )안에 들어갈 가장 올바른 용어를 쓰시오.

 

- (    ) 결합도  : 한 모듈이 다른 모듈 내부에 있는 변수나 기능을 직접 참조하거나 사용하는 경우의 결합도이다.
- (    ) 결합도 : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달될 때의 결합도이다.
- (    ) 결합도 : 단순 처리할 대상인 값만 전달되는 것이 아니라 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해서 어떻게 처리를 해야 한다는 (    ) 요소까지 전달하는 결합도이다.

답)

① 내용

② 스템프

③ 제어

해설) 수제비 실기책 4-13페이지 참조


88. 다음은 웹 접근성(Web Accessibility) - WCAG(Web Content Accessibility Guidelines) 2.0의 원칙에 대한 설명이다. 괄호 (  ) 안에 들어갈 가장 정확한 용어를 쓰시오.

- (  ①  )의 용이성 : 대체 텍스트(Text Alternatives), 실시간 미디어 대체 수단, 융통성, 식별성의 세부 지침이 있다.
- (  ②  )의 용이성 : 키보드 접근성, 충분한 시간 제공 및 시간 조절기능, 발작 예방, 탐색 가능성의 세부 지침이 있다.
- (  ③  ) : 가독성, 예측 가능성, 입력 지원의 세부 지침이 있다.
- 견고성 : 호환성의 세부 지침이 있다 - 보조기술을 포함한 현재 및 미래의 사용자 응용 프로그램과의 호환성을 극대화해야 한다는 원칙

정답)

① 인식

② 운용

③ 이해성

해설)  

- 웹 접근성(Web Accessibility) - WCAG(Web Content Accessibility Guidelines) 2.0의 원칙에는 인식의 용이성, 운용의 용이성, 이해성, 견고성이 있다.(두음: 인운이견)

* 혹시 몰라서 문제 냈어요. 알아두세요.


85. 다음은 UI 품질 요구사항에 대한 설명이다. 괄호 (  ) 안에 들어갈 용어를 쓰시오.

- UI 품질 요구사항 중 사용성(Usablity)은 사용자와 컴퓨터 사이에 발생하는 어떠한 행위를 정확하고 쉽게 인지 가능함을 의미한다. 이 품질 요구사항의 사용성에는 다음과 같은 3가지 특성이 있다.
- ( ① ) : 소프트웨어의 논리적인 개념과 적용 가능성(응용 가능성)을 분간하는 데 필요한 사용자의 노력 정도에 따른 소프트웨어 특성
- ( ② ) : 소프트웨어 애플리케이션 익히는데 필요한 사용자의 노력 정도에 따른 특성
- 운용성 : 소프트웨어의 활용과 운용 통제에 필요한 사용자의 노력 정도에 따른 특성

답)

① 이해성 (Understandability)

② 학습성(Learnability)

 

 

정답 및 해설)

* 사용성 - 이해성, 학습성, 운용성 (사이학운) - 이거 하나 기억하시자구요.

 

* UI 품질 요구사항은 - 기능성, 신뢰성, 사용성, 효율성, 유지 보수성, 이식성 (기신사효유이)

* 그중에서 UI에서는 사용성이 가장 중요해요.

* 사용성은 부특성까지 암기 - 사이학운


>84. 다음은 클린 코드 작성 원칙과 소스 코드 최적화 기법에 대한 설명이다. 괄호 (  ) 안에 들어갈 용어를 쓰시오.

[클린 코드 작성 원칙]
- (가독성) : 이해하기 쉬운 용어를 사용, 코드 작성 시 들여쓰기 기능을 사용
- (    ) : 한 번에 한 가지 처리만 수행, 클래스/메소드/함수를 최소 단위로 분리
- (의존성) : 영향도를 최소화, 코드의 변경이 다른 부분에 영향이 없게 작성
- (중복성) : 중복된 코드를 제거, 공통된 코드를 사용
- (추상화) : 클래스/메소드/함수에 대해 동일한 수준의 추상화 구현, 상세 내용은 하위 클래스/메소드/함수에서 구현


[소스 코드 최적화 기법]
- 변수나 클래스, 메서드 명을 의도가 분명한 이름(사용용도, 작업명)으로 사용한다.
- 클래스는 행위의 주체로 명사나 명사구로 표현하고 함수 이름은 클래스가 행하는 행위로 동사 또는 동사구로 사용한다.
- 클래스는 하나의 역할, 책임만 수행할 수 있도록 (      )를 높이고, 크기를 작게 작성한다.
- 클래스의 자료 구조, 메소드를 추상화할 수 있는 인터페이스 클래스를 이용하여, 클래스 간의 (      )을 최소화해야 한다.

정답)

① 단순성

② 응집도

③ 의존성

해설)

* 클린코드의 작성 원칙 : 가독성, 단순성, 의존성 최소화, 중복성 최소화, 추상화 사용의 작성 원칙은 반드시 기억해 두세요. (수제비 실기책 7-44)

* 소스코드 최적화 기법 (= 클린코드 구현 방식) 반드시 기억해두세요.

변수나 클래스메서드 명을 의도가 분명한 이름(사용용도작업명)으로 사용한다.

클래스는 행위의 주체로 명사나 명사구로 표현하고 함수 이름은 클래스가 행하는 행위로 동사 또는 동사구로 사용한다.

클래스는 하나의 역할책임만 수행할 수 있도록 응집도를 높이고크기를 작게 작성한다.

클래스의 자료 구조메소드를 추상화할 수 있는 인터페이스 클래스를 이용하여클래스 간의 의존성을 최소화해야 한다.

- 수제비 실기책 7-43 참조


78. 다음은 애플리케이션 성능 개선 방안에 대한 설명이다. 괄호(    )안에 들어갈 용어를 쓰시오.

1. 소스 코드 최적화 기법 적용
- 인터페이스를 통해 (    )된 자료 구조를 구현하여 의존성을 최소화한다.
2. System.out.println( ) 사용 제외
- 파일, 콘솔에 로그를 남기면 애플리케이션 대기 시간이 발생된다.
- 이에 대응하여 (    )를 사용함으로써 성능을 개선한다.

정답)

① 추상화
② Log4j 로거

해설) 수제비 실기 책 7-45페이지


76. 다음은 보안 공격 기법에 대한 설명이다. 괄호(    )안에 들어갈 공격 기법을 쓰시오.

- (  ①  ) : 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에 ICMP Echo 패킷을 직접 브로드캐스팅(Directed Broadcasting)하여 타켓 시스템을 마비시키는 공격기법이다.
- (  ②  ) : 요청 헤더의 Content-length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시켜 자원을 소진시키는 공격기법이다.
- (  ③  ) : 공격자가 IP Fragment Offset 값을 서로 중첩되도록 조작하여 전송하고, 이를 수신한 시스템이 재조합하는 과정에서 오류가 발생, 시스템의 기능을 마비시키는 공격기법이다.

정답)

① 스머프(Smurf)

② RUDY(Slow HTTP POST DoS)

③ 티어 드롭(Tear Drop)

해설) 수제비 실기책 9-6, 9-7, 9-8