블로그 이미지
Leeway is... the freedom that someone has to take the action they want to or to change their plans.
maetel

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

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
  • total
  • today
  • yesterday

Category

hw2

1. 주어진 데이터를 내림차순으로 정렬하는 프로그램을 작성하시오.
2. 주어진 데이터를 오름차순으로 정렬하는 프로그램을 작성하시오.

붉은 줄을 빼 먹는 바람에... ㅡㅜ 일일이 써 봄.
/*    
   int n;
   int s;
   int k;
   for (n=0; n<20; n++){
       s = number[n];
       for(i=n; i<20; i++){
           if(s>number[i]){
               k = s;
               s = number[i];
               number[i] = k;
           }
        number[n] = s;
       cout << number[n] << " : ";
       }        
   }
   for (i=0; i<20; i++)
   cout << number[i] << "<";
*/



 less = number[0];
    for (i=0; i<20; i++)
        if(less>number[i]){
            k = less;
            less = number[i];    
            number[i] = k;
        }
    cout << "less: " << less << endl;

    number[0] = less;
    cout << "number[0]= " << number[0] << endl;    

    less = number[1];
    for (i=1; i<20; i++)
        if(less>number[i]){
            k = less;
            less = number[i];
            number[i] = k;
        }
//    k = number[1];
    number[1] = less;
//    less = k;
    cout << "number[1]= " << number[1] << endl;
    
    
    less = number[2];
    for (i=2; i<20; i++)
        if(less>number[i]){
            k = less;
            less = number[i];
            number[i] = k;
        }
    number[2] = less;
    cout << "number[2]= " << number[2] << endl;
 
    
    less = number[3];
    for (i=3; i<20; i++)
        if(less>number[i]){
            k = less;
            less = number[i];
            number[i] = k;
        }
    number[3] = less;
    cout << "number[3]= " << number[3] << endl;

그렇다. 난 이 코드가 대단히 비효율적이라는 것 때문에 괴로웠다. 비효율적이라기보다는 하지 않아도 되는 일을 쓸데없이 시키고 있지 않은가. 처음 숙제를 시작할 때부터 알고 있었던 사실이었다. 분명 방법이 있다는 것을 느끼면서도, 무슨 수를 써도 어쩔 수 없어 결국 for 구문 아래에서 swapping을 해야 했던 이유는, index를 기준으로 접근했을 때에는 index를 swapping해야 한다고만 생각하고, element를 기준으로 접근했을 때에는 element의 value를 swapping해야 한다고만 생각했기 때문이었다. 하지만 index를 swapping하자니 for 구문 아래에서 에러가 나고, value를 찾은 다음에는 해당 index를 for 구문 밖으로 빼낼 방법이 없고. 아예 전체 index에 대한 ghost index(?) 같은 걸 만들어야 하나 해서 심지어 실행해 옮기기까지 했던 왕삽질을 거듭했다.

사고에도 시각의 맹점 같은 게 있는 것 같다. 뭔가 있다는 것을 알면서도 죽어도 그게 보이지 않는, 죽어도 그게 생각나지 않는. 결과만 나오면 뭐 하나? 내게 코딩은 수단이지 결코 목적이 아닌 것을. 학교에 온 이유는 여기까지 왔을 때, 사고의 맹점에 다달았을 때, 더 이상 혼자 힘으로는 갈 수가 없다는 것을 수없이 느꼈기 때문이었다. 이런 건 책이나 인터넷 포럼 같은 곳에 나와 있는 것도 아니다. (이 문제는 초보 예제니까 나와 있을지도 모르겠지만. 이 문제가 문제가 아니라 사고력이 문제인 것이다.) 컴퓨터 공학을 전공한 사람이나 직업 프로그래머라고 해서 실마리를 주는 것도 아니었다. 내가 뭐 그렇게 어려운 알고리듬을 원하는 것도 아니건만. (조금은 원하나? 당장이 아니라서 그렇지.) 내가 코딩해서 원하는 결과가 나왔던 40여 개의 코드 중에 정말로 기능적으로 최적이며 응용이 쉽게 만들었다고 느낀 코드는 딱 하나이다. 게다가 그 또한 내 무지에서 비롯된 착각인지도 모른다.
 
교수님 코드:
int i;
int temp;
int min_index;

for (i=0; i<Length; i++)
{
    for(j=min_index+1; j<Length; j++)
    {
        if(number[min_index] > number[j])
            min_index = j;
    }
   
    temp = number[min_index];
    number[min_index] = number[i];
    number[i] = temp;
}

진짜 이거 이렇게 풀어 줄 존재가 절실했다. 실제로 어떤 일들이 벌어지고 있는지 알고 있는 사람이 절실했다. 정확하고 세세하게 알고 있어야 진정 컨트롤할 수 있기 때문이다. 나는 조절력을 가지고 싶다. 많이도 아니다. 내 작업할 수 있는 정도로만. 내가 뭐 지형이나 지질을 파악한댔나, 단지 내가 지도에서 어느 위치에 있는지만 알 수 있으면 만족이다. 초보만 떼면 되는데.

   

'@GSMC > 서용덕: DMD Programming' 카테고리의 다른 글

week 3 review  (0) 2008.03.22
[Steve Oualline] 5. Arrays, Qualifiers, and Reading Numbers  (0) 2008.03.16
week 2 review  (0) 2008.03.15
[Steve Oualline] 4. Basic Declarations and Expressions  (0) 2008.03.10
hw1  (0) 2008.03.10
posted by maetel