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문을 나온 후에도 마지막 숫자를 더하거나 빼줘야 함
'알고리즘 > 코딩 테스트 문제' 카테고리의 다른 글
[프로그래머스] 다항식 더하기(C) (0) | 2023.09.25 |
---|---|
[프로그래머스] 등수매기기(C) (0) | 2023.09.21 |
[프로그래머스] 영어가 싫어요(C) (0) | 2023.09.21 |
[프로그래머스] 잘라서 배열로 저장하기(C) (0) | 2023.09.21 |
[프로그래머스] 이진수 더하기(C) (0) | 2023.09.21 |