boj 1292번 문제의 코드를 통해 접하게된 ,을 통한 한줄 표현 방법에 대하여.
int func(int n) {
  int i = 1, sum = 0;
  while (n > i) sum += i * i, n -= i++;
  return sum + i * n;
}

위와 같은 코드를 접하게 되었고,

이때에 처음에 

while(n>i) sum+=i*i, n-= i++; 형태로 작성되어있는 코드를 보았는데, 이 코드의 경우 지금까지와는 다른 형태로 작성되어있는 코드이기 때문에 처음에 굉장히 이해하는게 직관적으로 되지 않았다.

물론 , 를 통해서는, int a, b; 형태처럼 새로운 타입을 선언할때는 자주 보던 형태였는데, 이렇게 명령문을 두개를 이어서 한줄에 기입하는건 처음 보는 경우였다. 

전체적으로 볼때, while(n>i) 문도 한줄짜리를 처리할 수 있도록 { } 없이 작성하였고, 한줄에 모두 담기 위해서 ,을 활용하여서

sum+=i*i , n-=i++; 형태로 작성한것 같은데, 

이 코드의 경우는

while(n>i){
  sum+=i*i;
  n-=i++;
}
//혹은 
while(n>i){
  sum+=i*i;
  n-=i;
  i++;
}

형태로 작성되는것이 처음 바라보았을때 이해되기는 더욱 쉬운 형태의 코드가 아닐까 싶다. 

물론 더욱 한줄에 , 간결해보이게 작성하는 형태는 whil(n>i) sum+=i*i , n-=i++;

형태일 수 있겠으나, 이렇게 몇줄 더줄이는 것보다 그냥 더욱 이해를 쉽게 만들어주는 형태로 줄을 늘리는게 나을것 같다. 

 

  Comments,     Trackbacks