본문 바로가기
알고리즘/문자와 문자열

2908 상수

by tryotto 2020. 1. 4.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
 
char* reverse(char* arr) {
    int len = strlen(arr);
    char* rev = (char*)malloc(sizeof(char)*2);
    
    for (int i = 0; i < len; i++) {
        rev[i] = arr[len - 1 - i];
    }    
    return rev;
}
 
int toInt(char* arr, int len) {
    int sum = 0;
    for (int i = 0; i < len; i++) {
        sum += (int)(arr[len - i - 1- 48* pow(10, i);
    }
    return sum;
}
 
int main() {
    char a[4= { 0 }, b[4= { 0 };
    scanf("%s %s"&a, &b);
 
    char* ra = reverse(a);
    char* rb = reverse(b);
 
    char* re = (char*)malloc(sizeof(char* 4);
    
    int lenA = strlen(a);
    int lenB = strlen(b);    
 
    int intA = toInt(ra, lenA);
    int intB = toInt(rb, lenB);
    printf("%d", intA > intB ? intA : intB);
}
cs

strlen : NULL 을 만날때까지 세는 것. malloc 이랑 같이 쓰다보면 문제가 생기게 됨

malloc : 내부 값을 초기화 시키지 않기 때문에 오류 발생 가능. calloc 을 써주는게 좋다 (내부 초기화하므로)

배열 반환하려면, 지역변수로 반환해서는 안 됨. 반드시 메모리 할당을 해줘야됨(malloc, calloc)


'알고리즘 > 문자와 문자열' 카테고리의 다른 글

1316 그룹 단어 체크  (0) 2020.01.04
5622 다이얼  (0) 2020.01.04
1157 단어공부  (0) 2020.01.03
11654 아스키 코드  (0) 2020.01.03
blurred vision 더블릿  (0) 2019.03.01