강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

uwkdwkdwkd님의 프로필 이미지
uwkdwkdwkd

작성한 질문수

독하게 시작하는 C 프로그래밍

[필수 실습 문제] 버블정렬

프로그래밍에서 과정과 결과 중에 어떤게 더 중요한가요

해결된 질문

작성

·

116

0

문제를 풀고 정답을 맞춰서 기분이 좋던 와중, 선생님의 답안과 비교해 보다가 문득 조금 다른 풀이과정이 있어서 질문드립니다.

 

먼저 제 코드는 아래와 같습니다.

 

int main(void)

{

int n[5] = { 2,5,3,1,4 };

int nmin = 0;

for (int i = 0; i < 5; ++i) {

for (int j = i ; j < 5;++j)

if (n[i] > n[j]) {

nmin = n[j];

n[j] = n[i];

n[i] = nmin;

printf("%d %d %d %d %d\n", n[0], n[1], n[2], n[3], n[4]);

}

}

for (int u = 0; u < 5; ++u)

printf("%d", n[u]);

}

 

빨간색으로 표시 해 둔 부분이 강사님과 조금 다른 부분이 있습니다. 모범답안(?) 에는 변수 j = i +1 으로 설정해라 가 정답이었고

저는 j = i 로 설정했었습니다.

 

만약 이러한 경우에 과정이 조금 다르다고 해서 틀린 부분을 끝가지 더 이해하고 복기하는 방법론이 나을까요 아니면

결과에 조금 더 집중하고 전체적인 진도를 우선시 하여 가져가는 게 나을까요?

 

추가로 저의 상황은 저는 방통대 컴과 학과에 편입 준비중에 있고 프로그래밍의 이해를 위해 C언어를 먼저 수강중인 학생입니다.

추후 java와 같은 객체지향 언어를 공부 할 계획에 있습니다.

답변 2

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

조금 다른 것이지만 이것이 학교 시험이라면 오답처리되거나 감점됩니다. 그러므로 꼭 끝까지 따져서 분석해보실 것을 권합니다. 😄
앞으로 Java를 배울 예정이라면 C언어의 포인터까지는 꼭 알고 넘어가기 바랍니다. Java서 클래스 형식은 참조자 인데 C언어에서 참조자는 포인터로 구현됩니다. 해서 둘의 작동원리는 거의 같다 할 수 있습니다. 심지어 에러 메시지에도 NullPointer라는 말이 등장합니다.

편입에 앞서 미리 공부하는 중이라면 여유가 조금 있겠군요. 지금 열심히 달려두시면 향후 수업에서는 쉽게 넘어갈 수 있을 것입니다. 참고하시기 바랍니다. 😄

0

안녕하세요, 인프런 AI 인턴입니다. uwkdwkdwkd님께서 질문하신 프로그래밍 과정과 결과에 대한 고찰에 대해 설명드리겠습니다.

프로그래밍에서의 과정과 결과는 모두 중요하지만, 특히 학습 과정에서는 과정에 집중하는 것이 더욱 중요할 수 있습니다. 이는 문제 해결 능력과 코드의 효율성을 향상시키기 위해 필요합니다. 특히, 다음과 같은 점에서 과정에 집중하는 것이 중요합니다:

  1. 논리적 사고력 향상: 올바른 과정을 거치면서 문제를 해결하는 방법을 배우는 것이 중요합니다. 이는 향후 복잡한 문제를 해결하는데 필요한 기초를 다지는 과정이 됩니다.

  2. 디버깅과 코드 개선: 코드가 의도한 대로 작동하지 않을 때, 그 과정을 이해하고 수정하는 스킬이 필요합니다. 이러한 경험은 디버깅 능력을 향상시킵니다.

  3. 유지보수와 가독성: 명확한 과정을 통해 작성된 코드는 더 읽기 쉽고 유지보수하기 쉬워져, 장기적으로는 시간을 절약합니다.

코드 이해 및 개선

당신의 코드에서 for (int j = i; j < 5; ++j) 부분과 강사의 코드에서 j = i + 1인 부분의 차이점은 비교 시작점입니다.
- j = i로 설정하면, 자기 자신과도 비교하게 되므로 불필요한 비교가 발생합니다.
- j = i + 1로 설정하면, 현재 항목의 다음 항목부터 비교를 시작하므로 더 효율적입니다.

기본적으로 선택 정렬 알고리즘에서는 이미 정렬된 부분은 무시하고 진행해야 하므로 j = i + 1이 더 적절합니다. 그러나, 두 코드가 모두 결과적으로 정렬된 배열을 출력합니다. 이는 다양한 방식의 해결이 가능하다는 것을 보여줍니다.

과정 vs 결과

  • 과정에 더 중점을 두세요: 과정 중에서 오는 학습과 이해는 미래의 응용 가능성을 열어줍니다.
  • 결과도 중요합니다: 프로그래밍은 결국 문제 해결을 위한 도구이므로, 해결할 문제의 요구사항을 충족하는 결과물도 중요합니다.

다음 단계로 나아가기 위해 진도를 진행하는 것도 필요하지만, 이해가 부족한 부분은 다시 돌아가서 확실히 이해하고 넘어가세요.

이와 관련된 유사한 질문과 답변은 여기에서 확인하실 수 있습니다: [필수 실습 예제 질문 있습니다.]

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

uwkdwkdwkd님의 프로필 이미지
uwkdwkdwkd

작성한 질문수

질문하기