flag에 대한 고찰???
글쓴이: jiee / 작성시간: 화, 2007/01/16 - 5:31오후
The c programming language의 예제1-9를 보면,
"... 빈칸이 연달아 나오면 그것을 모두 한 칸으로 만들어 출력하라..."
고 합니다.
solution이라고 찾아서 봤더니 아래와 같이 짰더군요.
void func() { int c; int inspace; inspace = 0; while((c = getchar()) != EOF) { if(c == ' ') { if(inspace == 0) { inspace = 1; putchar(c); } } /* We haven't met 'else' yet, so we have to be a little clumsy */ if(c != ' ') { inspace = 0; putchar(c); } } }
그런데, 저는 flag를 사용하는 코드는 다소 안 좋다고 생각하여 아래와 같이 작성하였습니다.
void func() { char ch, before = 'a'; while ( (ch = getchar()) != EOF) { if (before == ' ' && ch == ' ') continue; putchar(ch); before = ch; } }
여러분의 생각은 어떠신지 궁금합니다.
Forums:
속도가
속도가 중요하다면,
매번 할당을 하는 아랫것 보다는
플래그 변동시만 할당되는 위에 것이 빠를것 같네요.
가독성이 중요하다면,
아랫것이 훨씬 낫겠죠.
emerge money

https://xenosi.de/
재미로...
할당이 비교보다 속도가 더 느리다고 가정할때 (이게 맞는지는 모르겠습니다만...)
다음과 같이 하면 원래 코드에서 할당하는걸 비교로 바꿨으니 더 빠를수도.... 물론 런타임 테스트 절대 해본적 없습니다. ㅎㅎ
void func()
{
char ch;
int inspace = 0;
while ( (ch = getchar()) != EOF)
{
if (ch == ' ') {
inspace = 1;
continue;
}
if (inspace) {
putchar(' ');
inspace = 0;
}
putchar(ch);
}
}
댓글 달기