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