본문 바로가기
알고리즘/코딩 테스트 문제

[프로그래머스] 문자열 계산하기(C)

by 진진리 2023. 9. 21.
728x90
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
int solution(const char* my_string) {
    int answer = 0;
    int index =0;
    char array[] = "0123456789+- ";
    int num = 0;
    int flag_num = 0;
    int flag_sign = 1;
    int i;
    
    while(index < strlen(my_string)){
        for(i=0;i<13;i++){
            if(strncmp(my_string+index,array+i,1)==0) break;
        }
        if(i<10){
            if(flag_num==0) num = i;
            else num = num*10 + i;
            flag_num = 1;
        }
        else if(i==10||i==11){
            flag_num = 0;
            
            if(flag_sign==1) answer += num;
            else answer -=num;
            num = 0;
            
            if(i==10) flag_sign = 1;
            else if(i==11) flag_sign = 0;
        
        }
        index++;
    }
    if(flag_sign)answer += num;
    else answer -= num;
    
    return answer;
}

부호가 등장한 후 뒤의 수를 더할 건지 뺄건 지 정해야 함 -> flag_sign

숫자가 연속해서 등장하는지 확인 -> flag_num

while문을 나온 후에도 마지막 숫자를 더하거나 빼줘야 함