소괄호로 이루어진 문자열을 주어지면 괄호의 개수를 출력하는 프로그램을 작성하시오.
#include <stdio.h>
#include <string.h>
int main() {
// ( 40
// ) 41
char a[100001];
int cnt = 0;
int cnt2=0;
int end;
gets(a);
//printf("%s", input);
end = strlen(a);
for (int i = 0; i < end; i++) {
if (a[i]==40) {
cnt++;
}
else if (a[i] == 41) {
cnt2++;
}
}
printf("%d %d", cnt, cnt2);
}
((()
3 1
()()()((((((
9 3
처음에 배열을 a[100000] 으로 설정해서 오류 발생
buffer overflow detected:버퍼 오버플로우, 문자열이 배열보다 긴지 확인하세요.
배열의 끝인 null(\0) 문자까지 포함해야하기 때문에 a[100001] 로 설정해야 한다
아스키코드를 이용
( = 40
) = 41
for문으로 문자열 끝까지 돌릴 때
아스키코드 40에 해당할 때 마다 cnt++
아스키코드 41에 해당할 때 마다 cnt2++
728x90
'Dev. > Algorithm Prac' 카테고리의 다른 글
CodeUp c++ 1416 : 2진수 변환 (0) | 2022.04.09 |
---|---|
CodeUp c++ 1411 : 빠진 카드 (0) | 2022.04.03 |
CodeUp c++ [1차원배열] 1407 : 문자열 출력하기/공백 지우는 함수 만들기 (0) | 2022.04.03 |
CodeUp c++ [1차원배열] 1405 : 숫자 로테이션 (0) | 2022.04.03 |
CodeUp c++ 1093 : [기초-1차원배열] 이상한 출석 번호 부르기 (0) | 2022.04.02 |
댓글