목표 : dp 공부하고 문제풀기
내가 한 것 : 백준 1251번 문제 풀기
1251번 푸는 과정
1. 문자열 나누는 지점 설정
2. 1.을 기준으로 reverse한 문자열들 저장
3. strcmp()로 사전에서 가장 빠른 문자열 찾기
4. 3.을 출력
코드
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#define STR_SIZE 50
char string[STR_SIZE]; //입력받는 문자열
int length; //입력받은 문자열 길이
char r_string[STR_SIZE][STR_SIZE]; //reverse한 문자열들
int size = 0; //reverse문자열 갯수
void reverse(char *s, int one, int two);
char *min_check(char r_string[][STR_SIZE], char *min);
int main()
{
scanf("%s", string);
length = strlen(string);
int i, j;
for (i = 0; i < length - 1; i++)
{
for (j = i + 1; j < length - 1; j++)
{
reverse(string, i, j);
}
}
char *min = (char*)malloc(sizeof(char)*length + 1);
printf("%s\n",min_check(r_string,min));
free(min);
return 0;
}
void reverse(char *s, int one, int two) //reverse한 문자열들 저장
{
int len = strlen(s);
char *temp = (char *)malloc(sizeof(char)*len);
int i = 0;
int one_1 = one;
while (one_1 > -1)
{
temp[i] = s[one_1--];
i++;
}
int two_2 = two;
while (two_2 > one)
{
temp[i] = s[two_2--];
i++;
}
int len_3 = len - 1;
while (len_3 > two)
{
temp[i] = s[len_3--];
i++;
}
strcpy(r_string[size], temp);
size++;
free(temp);
}
char *min_check(char r_string[][STR_SIZE], char *min) //사전에서 가장 빠른 거 찾기
{
strcpy(min, r_string[0]);
int i;
for (i = 1; i < size; i++)
{
if (strcmp(min, r_string[i]) > 0)
{
min = r_string[i];
}
}
min[length] = '\0';
return min;
}
결과 : 런타임 에러
문제점 : visual studio에서는 잘 작동하나 백준에서는 런타임 에러 발생
문제점 관련 공부 할 것 : 동적할당 메모리 관리
'모각코 > 2019 겨울방학' 카테고리의 다른 글
모각코 3회차 결과(19.07.17) (0) | 2019.07.17 |
---|---|
모각코 3회차(19.07.17) (0) | 2019.07.17 |
모각코 2회차 결과(19.07.10) (0) | 2019.07.10 |
모각코 2회차(19.07.10) (0) | 2019.07.10 |
모각코 1회차(19.07.03) (0) | 2019.07.03 |
댓글