D.S.
Übermensch : To a Brighter Future
D.S.
전체 방문자
오늘
어제
  • 분류 전체보기 (109)
    • Lecture Notes (1)
      • CS231n (1)
    • Thoughts on Videos (ToV) (7)
    • Tech (0)
    • 개인 기록 (0)
      • 프로그래밍공부일지 (0)
      • CS Study 한눈에 보기 (0)
    • 프로그래밍 (65)
      • C (35)
      • C++ (0)
      • Python (12)
      • 이코테python (8)
      • 2022군장병AI_SW_Elice (4)
      • 2022군장병AI_SW_Kakao (1)
      • Solidity (2)
      • Web (3)
    • Mental Augmentation (28)
      • Kwik Reading (22)
      • 독서 (0)
      • 갸꿀팁 (2)
      • 3-Part Memory Training (1)
      • Kwik Recall (3)
    • Physical Augmentation (3)
      • Health Journal (2)
      • Sinclair Podcast (1)
    • Others (0)
      • 여행 (0)
    • Idea Bank (0)
      • VBA (0)
      • PLANS (0)
    • 22-2학기 수업 (0)
      • 데이터베이스시스템 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

글쓰기

Kwik Reading

공지사항

인기 글

태그

  • subvocalization
  • 비문학독해
  • 번역
  • Jim Kwik
  • 기술독서
  • 속발음
  • Kwik Brain
  • brain break
  • 짐 퀵
  • lifespan
  • 독서
  • Eye Fixation
  • ai/sw
  • 뇌 요가
  • kwik recall
  • Infinity Technique
  • 습관
  • 노화의 종말
  • Kwik Reading
  • 우뇌
  • 속독
  • 디지털 방해
  • brain yoga
  • 학습
  • baekjoon
  • 군장병
  • elice
  • Dandapani
  • 백준
  • 속독 훈련

최근 댓글

hELLO · Designed By 정상우.
D.S.

Übermensch : To a Brighter Future

프로그래밍/C

baekjoon 1874 & runtime error: integer overflow

2022. 1. 12. 23:28

#include<stdio.h>
#include<stdlib.h>

int main(){
    
    int N;
    scanf("%d", &N);
    int* stack;
    stack = (int*)malloc(sizeof(int)*(N+1));
    int tmp;
    char* order;
    order = (char*)malloc(sizeof(char)*(2*N));
    int top = 0;
    int nxt = 1;
    int ord=0;
    for(int i=0;i<N+1;i++)
        stack[i] = 0;
    
    for(int i=1;i<N+1;i++){
        scanf("%d", &tmp);
        if(stack[top]>tmp){ // 못만듦
            printf("NO");
            return 0;
        }
        else if(stack[top]<tmp){
            while(stack[top]!=tmp){
                if(nxt>N){
                    printf("NO");
                    return 0;
                }
                stack[++top] = nxt++; //push
                order[ord++] = '+';
            }
            if(stack[top]==tmp){
                stack[top--] = 0; //pop
                order[ord++] = '-';
            }
            
        }
        else{
            stack[top--] = 0; //pop
            order[ord++] = '-';
        }
    }
    for(int i=0;i<ord;i++)
        printf("%c\n", order[i]);
        
    free(stack);
    free(order);
    
    return 0;
}

 

///////////////

첫 시도때 runtime error integer overflow가 나왔다

integer의 범위에서 벗어날때 이러한 에러가 발생하는데, 나의 경우에는 배열의 값을 초기화하지 않고

비교를 실행하여 발생하였다.

 

배열 선언후 초기화 시켜주면 이러한 에러를 고칠 수 있다.

'프로그래밍 > C' 카테고리의 다른 글

baekjoon 2805 w/ binary Search  (0) 2022.01.15
baekjoon 2108 & float와 double형의 차이  (0) 2022.01.12
baekjoon 1920 w/ binary search & merge sort  (0) 2022.01.11
baekjoon 2751 w/ merge sort  (0) 2022.01.11
baekjoon 1654 w/ binary search  (0) 2022.01.10
    '프로그래밍/C' 카테고리의 다른 글
    • baekjoon 2805 w/ binary Search
    • baekjoon 2108 & float와 double형의 차이
    • baekjoon 1920 w/ binary search & merge sort
    • baekjoon 2751 w/ merge sort
    D.S.
    D.S.

    티스토리툴바