1157번 - 단어 공부
아래는 제가 생각한 문제 풀이 방법순서인데요
1. 임시 문자열 저장소인 a에 입력 문자열 저장->동적 메모리 p에 크기 맞게 저장
2. strcpy로 배열 a에 저장된 문자열을 p에 복사한다
3. 새 함수에 포인터p에 저장된 주소와 동적메모리의(문자열부분)사이즈 인수제공
4. pa를 통해 동적메모리에 접근하여 문자열과 알파벳 비교해서 문자열과 동일한 알파벳이 있는 알파벳 배열의 해당칸 +1
5. 알파벳 배열을 비교해 Max구하고 Max와 같은 값의 알파벳 배열 요소가 있으면 ?반환 아니면 해당 알파벳 요소 번호+97(아스키코드 소문자) 로 반환(char)
Q1. 과정1에서 임시저장소를 쓸때 char a[1000001]이라는 엄청난 크기의 배열을 만드는데 "함수에서 '1000008'바이트의 스택을 사용하는데 이 크기가
/analyze:stacksize'16384'를 초과했습니다 일부 데이터를 힙으로 이동하십시오"라는 경고가 뜹니다. 스택은 일반 지역변수 메모리 저장공간, 힙은 동적 메모리 저장 공간으로 알고 있는데 스택에 너무 큰 영역을 할당해서 동적메모리도 쓰라는 건가요?
Q2. 동적메모리를 쓰려면 임시 저장배열을 통해서 strlen()를 이용해야 하지 않나요?
Q3. 예제는 되는 듯한데 오답으로 나옵니다
A1. 경고는 오류가 아닙니다. 무시하고 사용하셔도 무방합니다.
A2. 동적할당은 힙영역에서 할당되는 것이 맞고 strlen() 을 사용하여 할당해줄 수도 있습니다.
A3. 대문자로 출력해야 하는데 소문자로 출력하셨습니다.
46번째 줄을 return (char)(MaxNUM+65); 로 변경하시면 통과됩니다.
댓글을 작성하려면 로그인해야 합니다.
potocanon1234 2년 전
아래는 제가 생각한 문제 풀이 방법순서인데요
1. 임시 문자열 저장소인 a에 입력 문자열 저장->동적 메모리 p에 크기 맞게 저장
2. strcpy로 배열 a에 저장된 문자열을 p에 복사한다
3. 새 함수에 포인터p에 저장된 주소와 동적메모리의(문자열부분)사이즈 인수제공
4. pa를 통해 동적메모리에 접근하여 문자열과 알파벳 비교해서 문자열과 동일한 알파벳이 있는 알파벳 배열의 해당칸 +1
5. 알파벳 배열을 비교해 Max구하고 Max와 같은 값의 알파벳 배열 요소가 있으면 ?반환 아니면 해당 알파벳 요소 번호+97(아스키코드 소문자) 로 반환(char)
Q1. 과정1에서 임시저장소를 쓸때 char a[1000001]이라는 엄청난 크기의 배열을 만드는데 "함수에서 '1000008'바이트의 스택을 사용하는데 이 크기가
/analyze:stacksize'16384'를 초과했습니다 일부 데이터를 힙으로 이동하십시오"라는 경고가 뜹니다. 스택은 일반 지역변수 메모리 저장공간, 힙은 동적 메모리 저장 공간으로 알고 있는데 스택에 너무 큰 영역을 할당해서 동적메모리도 쓰라는 건가요?
Q2. 동적메모리를 쓰려면 임시 저장배열을 통해서 strlen()를 이용해야 하지 않나요?
Q3. 예제는 되는 듯한데 오답으로 나옵니다