책 내용 질문하기
2018년 4월 정보처리산업기사 실기 문제2번(기출문제집 175page)
도서
2021 시나공 정보처리산업기사 실기
페이지
175
조회수
467
작성일
2021-10-10
작성자
탈퇴*원
첨부파일

1.기출문제집 175페이지  문제2번

 

2018년 4월 정보처리산업기사 실기 문제2번

 

 

 if(a[0] == 0 ||  a[0] < 1 ) 이게 참일경우에return a를 수행한다는건가요 ?거짓이면 for문장을 수행하나요?? 

제가 이문제의 해석을잘못하겟습니다 ㅠㅠ 순서와 진행방법을 천천히알려주실수있을까요?

 

 temp = a[i];
      a[i] = a[sw];
      a[sw] = temp;이게 교환한다는건 알고잇습니다 ㅠㅠ
답변
2021-10-11 11:41:37

안녕하세요 길벗수험서 운영팀입니다.

 

if(a[0] == 0 || a[0] < 1)     

   return a;

a[0]이 0이거나 1보다 작으면 a값을 반환하고 메소드를 종료한다는 의미입니다. 

만약 a[0]의 값이 1이상이라면 다음 줄인 for문으로 이동하여 진행을 계속하겠죠.

 

for(i = 0; i < n-1; i++) {

   sw = i;

   for(j = i + 1; j < n; j++) {

      if(a[j] < a[sw])

         sw = j;

   }

a[j]와 a[sw](≒a[i])의 값을 비교하고 있고, a[j]가 작으면 그 위치를 sw에 저장하고 있습니다.

i가 0부터 배열의 크기-1 까지 반복하고 있음에 주의하세요.

 

   temp = a[i];

   a[i] = a[sw];

   a[sw] = temp;

}

이제 sw에는 가장 작은 수의 위치가 저장되어 있을 테고 이것을 배열의 첫 번째 위치랑 교환하네요. i, j값의 변화와 조건문을 보았을 때 선택 정렬을 활용한 오름차순 정렬임을 알 수 있습니다. 

 

행복한 하루되세요 :)

 

  • 관리자
    2021-10-11 11:41:37

    안녕하세요 길벗수험서 운영팀입니다.

     

    if(a[0] == 0 || a[0] < 1)     

       return a;

    a[0]이 0이거나 1보다 작으면 a값을 반환하고 메소드를 종료한다는 의미입니다. 

    만약 a[0]의 값이 1이상이라면 다음 줄인 for문으로 이동하여 진행을 계속하겠죠.

     

    for(i = 0; i < n-1; i++) {

       sw = i;

       for(j = i + 1; j < n; j++) {

          if(a[j] < a[sw])

             sw = j;

       }

    a[j]와 a[sw](≒a[i])의 값을 비교하고 있고, a[j]가 작으면 그 위치를 sw에 저장하고 있습니다.

    i가 0부터 배열의 크기-1 까지 반복하고 있음에 주의하세요.

     

       temp = a[i];

       a[i] = a[sw];

       a[sw] = temp;

    }

    이제 sw에는 가장 작은 수의 위치가 저장되어 있을 테고 이것을 배열의 첫 번째 위치랑 교환하네요. i, j값의 변화와 조건문을 보았을 때 선택 정렬을 활용한 오름차순 정렬임을 알 수 있습니다. 

     

    행복한 하루되세요 :)

     

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.