조건문을 줄이자.

박재성·2021년 6월 27일
0
post-thumbnail

조건문은 프로그램에 해롭다?

'Do It C언어' 강의를 보는데, 조건문을 최소한으로 사용하는 것이 코드의 효율성을 높이는 방법이라고 했다. if, else 없이 코드를 짜는 것이 가능 할까?

얼마 안되지만, 내가 썼던 코드들을 봤다. 반복문 안에 조건문이 끝도 없이 적혀 있고, 10줄에 한 번씩은 조건문을 사용 하는 것 같다..(반성하자.)

예시

1 ~ 5를 3번 더하는 코드를 짜보자!

최악

int main()
{
  int sum = 0;
  for(int i = 0; i < 3; i++)
  {
    for(int j = 1; j <= 5; j++)
      sum += j;
  }
  printf("%d\n", sum);
}

최악의 코드를 만들었다. 다중 반복문을 통해 프로그램 성능의 저하를 만들어냈다.
반복문을 한 번으로 줄여보자.

그럭저럭

int main()
{
  int sum = 0;
  int count = 1;
  for(int i = 1; i <= 15; i++)
  {
    sum += count;
    count++;
    if(count > 5) count = 1;
  }
}

반복문을 하나로 줄였지만, 반복문을 수행 할 때 마다 조건문 검사를 수행 하므로, 이 또한 최적의 코드는 아니다.
반복문 안에 조건문을 삭제해보자.

이게 정답인 것 같지만..

int main()
{
  int sum = 0;
  for(int i = 0; i < 15; i++)
  {
    sum += (i % 5) + 1;
  }
}

반복문을 남발 하는 것은 최악의 코드, 조건문을 최대한 사용하지 않은 코드가 가장 빠른 실행 속도를 가졌다.

아주 간단한 코드지만, 실행시간이 두배 가량 차이가 나기 때문에, 프로그램 규모가 커질 수록 더 중요하게 생각하고 코드를 짜야 한다.

이게 베스트

사실 이렇게 코드를 짜면 된다.

int main()
{
	int N = 5;
	int sum = 3 * N*(N+1);
    
    
    return 0;
}

마무리

조건문이 프로그램 성능을 많이 저하 할 것이라고 생각하지 않았었다. 당연하다고 여겼던 것이 틀린 사실이라는 것에 뒤통수를 맞은 느낌이다.

끊임 없이 궁금해 하고, 궁금증을 해결 하는 과정에서 겪는 시행 착오가 초급에서 벗어나는 방법이라 생각한다!

조건문 하나도 허투루 쓰지 말자! 왜 쓰는지 알고, 언제 쓰는건지, 언제 쓰지 말아야 하는지 잘 알고 쓰자!

profile
개발, 정복

0개의 댓글