c++ 지속적으로 tmp 값을 쌓아나가다가 나중에 판별식에 도달했을때 사용하는 방법 (boj 1541)
for(char c: input){
        if(c=='+'||c=='-'){
            ans+=tmp*sign;
            if(c=='-') sign=-1;
            tmp=0;
        }
        else{
            tmp*10;
            tmp+=c-'0';
        }
    }

각각의 글자들에 대해서 +, 혹은 - 가 아니라면, 지속적으로 일렬로 늘어져있는 char 들을 

tmp*10;

tmp+=c-'0'; 형태의 코드를 통해서 기존에 읽어들인 값들을 자릿수를 하나 증가시키고, 그리고 다시 새로운 글자를 -'0'형태의 코드를 이용해서 int 형태로 만들고, 그것을 더해서 한자리 더 읽어들였을때의 int 값을 만드는 코드이다. 

이 코드를 익힌다면 아주 편하게 일렬로 주어진 숫자와 연산자들을 string으로 읽으면서 그 앞에 있는 수들을 숫자로 바꿀 수 있을 것이다.

 이러한 표현에 익숙해져 보도록 하자. 

아마 처음에는 생각이 잘 나지 않겠지만 자꾸 연습하다 보면 충분하게 떠올리고 생각해낼 수 있을 것이다. 

 

  Comments,     Trackbacks