모두CBT

회문(palindrome)은 영어 단어 radar와 같이 순서를 거꾸로… | [7급 국가직 자료구조론] 22년 1회차 기출문제 상세 페이지

1[7급 국가직 자료구조론] 22년 1회차
회문(palindrome)은 영어 단어 radar와 같이 순서를 거꾸로 뒤집어도 원본과 동일한 단어를 의미한다. 다음 C 코드의 isPalindrome() 함수는 입력 문자열이 회문인 경우 1을 반환하고, 그렇지 않을 경우는 0을 반환한다. (가), (나)에 들어갈 내용을 바르게 연결한 것은?
#include <stdio.h>
char stack[100];
int top = -1;

void push(char ch) {stack[++top] = ch;}

char pop() {return stack[top--];}

int isEmpty() {return top == -1;}

int isPalindrome(char *str) {
int i;
for ( i = 0; str[i]; i++ )
[ (가) ] ;

for ( i = 0; !isEmpty(); i++ )
if ( [ (나) ] )
return 0;
return 1;
}

int main() {
char input[100];
scanf("%s", input);
printf("%s",
isPalindrome(input) ? "True" : "False");
}
(가)  (나)
1
push(str[i])  str[i] == pop()
2
push(str[i])  str[i] != pop()
3
push(str[top-i])  str[i] == pop()
4
push(str[top-i])  str[i] != pop()
해설

(가) push(str[i]), (나) str[i] != pop()이다.

첫 반복에서 문자를 모두 스택에 넣으면 pop() 순서는 문자열의 역순이 된다. 두 번째 반복은 앞에서부터 읽은 문자와 역순 문자를 비교해, 하나라도 다르면 0을, 끝까지 같으면 1을 반환한다.

  • push(str[i]), str[i] == pop(): 같은 문자일 때 0을 반환해 회문을 거짓으로 판정한다.
  • push(str[top-i]), str[i] == pop(): top이 -1부터 시작해 엉뚱한 위치를 넣고, 비교 조건도 반대다.
  • push(str[top-i]), str[i] != pop(): 문자를 차례대로 넣지 못해 역순 비교가 성립하지 않는다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 자료구조론] 22년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 자료구조론 기출문제 암기장 전체 보기