Page 19 -
P. 19

23글자가 8글자로 줄었습니다. "aaaaabbbccccccddddddddd"를 압축할 때는 반복되는 문자

                   의 횟수를 적어주고, "a5b3c6d9"의 압축을 해제할 때는 숫자만큼 문자를 반복해주자고 약속
                   하면 됩니다. 생각보다 간단하죠? 컴퓨터에서 쓰이는 압축 알고리즘도 이러한 방법을 사용하

                   고 있습니다(실제로는 좀 더 다양한 상황에 대응하고 압축 효율을 높이기 위해 훨씬 복잡한 알
                   고리즘이 사용됩니다).

                   이처럼 문제에서 일정한 패턴을 발견하고, 패턴을 토대로 문제를 해결하는 절차가 알고리즘입

                   니다. 그리고 이 알고리즘을 코드로 표현하는 행동을 코딩이라 합니다(알고리즘을 컴퓨터의 명
                   령으로 작성하는 것을 프로그래밍이라고 하며 코딩과 같은 개념입니다).


                   ▼  그림 1-7 패턴을 발견하고 문제를 해결하는 절차를 코드로 작성
                                                                       코드
                                                          int main()
                                패턴                        {
                                                              char  * s1 = "aaaaabbbccccccddddddddd";
                                                              char s2[30] = { 0, };
                    • 같은 문자가 여러 번 반복되는 패턴을 발견                 int length;
                                                              length = strlen(s1);
                                                              char ch[2] = { 0, };
                                                              ch[0] = s1[0];
                                                              int count = 1;
                                                              char countStr[10] = { 0, };
                                                              for (int i = 1; i <= length; i++)
                                                              {
                                                                  if (ch[0] == s1[i])
                                                                  {
                        문제를 해결하는 절차(알고리즘)                             count++;
                                                                  }
                                                                  else
                      • 반복되는 문자를 세기
                                                                  {
                      • 문자가 반복되는 횟수를 적어줌                              strcat(s2, ch);
                                                                      sprintf(countStr, "%d", count);
                                                                      strcat(s2, countStr);
                                                                      ch[0] = s1[i];
                                                                      count = 1;
                                                                  }
                                                              }

                                                              return 0;
                                                          }


                     참고
                          프로그래밍과 코딩?
                     어떨 때는 프로그래밍이라고 했다가 어떨 때는 코딩이라고 하고 좀 헷갈리죠? 사실 둘 다 같은 작업을 지칭합니다. 프로그
                     래밍은 컴퓨터 명령어로 표현한다는 뜻이라 컴퓨터 쪽에 가깝고, 코딩은 C 언어 등의 프로그래밍 언어로 코드를 작성한다
                     는 뜻이라 언어 쪽에 가까운 표현입니다.







             026  프로그래머를 향한 출발점 COS Pro 2급




         cos pro 2급(C 언어 본문).indb   26                                                             2018-02-02   오전 10:01:48
   14   15   16   17   18   19   20   21   22   23   24