퍼포마의 야근근절을 위한 코딩

반복문 - 개념, 활용 가능 영역, 그리고 장단점

인생은스트러글 2022. 11. 16. 07:34

[목차]

0. 여는 말

1. 반복문의 개념

2. 반복문의 활용 가능 영역

3. 반복문의 장점

4. 반복문의 단점 

5. 맺는 말

 


 

0. 여는 말

 

이번 글과 다음 글에서는 '반복문'에 대해 얘기해 보려 합니다.
반복문은 코딩에 있어서 조건문과 함께 거의 필수에 가까운 구문인데요, 이번 글에서는 반복문의 개념활용 가능 영역, 그리고 장단점에 대해 다뤄보려 합니다.
본문이 길어질 것 같으니 서문은 이만 줄이겠습니다.

글 시작합니다!

 


 

1. 반복문의 개념

 

정해진 범위 내 연산 작업을 자동으로 수행하는 구문

 

반복문이란 한 문장으로 말하면 '정해진 범위 내의 연산 작업을 자동으로 수행하는 구문'이라고 정의할 수 있습니다.
대개 for문 혹은 while문을 사용하여 구현합니다.

 

for문은 범위의 시작과 끝을 정하여 구현하는 반복문입니다

 

while문은 특정한 조건 하나를 주고 그것을 만족하는 한, 끝없이 코드를 수행하는 반복문입니다

 


 

2. 반복문의 활용 가능 영역

 

한 마디로, '무궁무진' 합니다

 

반복문의 활용 가능 영역은 '무궁무진' 합니다. '같은 작업을 반복해서 수행한다' 라는 개념이 적용되는 업무라면 '대부분' '이론 상' 적용 가능합니다.

예리한 분들은 여기서 '대부분'과 '이론 상'이라는 표현에 대해 의문을 가지셨을 것 같아요.
먼저, '대부분'이라고 표현한 이유는 '저도 개발의 극히 일부만을 경험한 초보이기 때문에 감히 전부에 대해 논할 수 없다고 생각했기 때문'입니다. 다만 코딩을 했던 지난 1년 반 정도의 경험 동안 위 경우에 해당하는데 반복문을 적용할 수 없었던 경우는 없었던 것 같네요 :)

다음으로 '이론 상'이라고 표현한 이유는 현실적으로 API를 쓰거나 크롤링 시, API 제공 측 (ex. 네이버, 구글, 앱스플라이어)에서 API 사용 가능 횟수를 제한하기도 하고, 데이터를 제공하는 쪽에서 일부 데이터에 대해 크롤링을 허용하지 않는 경우이 있기 때문입니다.
(참고로, 크롤링 허용 여부는 robots.txt 에서 확인하실 수 있으며, 여기서 크롤링을 금지하고 있는 요소들은 추후 문제의 소지가 될 수 있으니 크롤링하지 않는 편이 좋다고 생각합니다)

 

앱스플라이어는 월별 OneLink API 사용 횟수를 750만 회로 제한하고 있네요 (이미지 클릭 시 관련 페이지 이동)

 

robots.txt 란 일종의 약속이라 지킬 의무는 없지만 왠만하면 지키는 게 좋다고 생각합니다 (이미지 클릭 시 관련 페이지 이동)

 

야놀자의 robots.txt 내용입니다. 왠만한 건 허용하되, 리뷰 등의 정보는 크롤링을 금지하고 있네요 (이미지 클릭 시 관련 페이지 이동)

 


 

3. 반복문의 장점

 

단순 반복 업무에서 자유로워질 수 있다

 

상상이나 기획이 필요 없는 단순 반복 업무에서 손을 뗄 수 있다는 점이 가장 큰 장점이라고 생각합니다.
저의 경우를 두 가지 정도만 예시로 들어보면,

1. 버티컬 커머스의 수십만 개 상품 정보를 일일이 복붙해서 가져오는 대신 반복문을 돌려 놓고, 식사하고 와서 그 동안 나온 결과물을 바로 분석에 활용하기도 하고,
2. 네이버 검색광고의 '키워드 도구' 기능을 1천 번 이상 사용해야 하는 작업을 반복문을 돌려 놓고 퇴근한 후, 다음날 아침에 나와 있는 결과물로 후속 작업하기도 했습니다.

 

한 번의 작업만으로도 수 시간이 걸리고, 나아가 주기적으로 반복해야 하는 횟수가 많은 업무일수록 반복문의 장점은 더욱 극대화될 것입니다.
(위 내용들은 추후 '크롤링'과 '네이버 검색광고 API'에 대한 글을 쓸 때 상세하게 다룰 예정입니다 :) )

 


 

4. 반복문의 단점

 

실행 시간이 오래 걸립니다 (하지만 그래도 사람의 속도보다는 현저히 빠릅니다)

 

반복문의 대표적인 단점은 반복문들이 중첩될수록 코드 실행시간이 급격히 증가한다는 점입니다.
예를 들어, 10가지 경우를 가지는 단순한 반복문을 3번만 중첩시켜도, 10x10x10 이 되어 경우의 수가 1,000 가지로 급증합니다.

10번짜리 반복문을 3개 중첩시키면 1,000번까지 경우의 수가 급증합니다

 

이러한 실행시간 이슈를 극복하기 위해서는 더 세련된 코드를 구성해야 할 수도 있고, 특정한 경우에는 리스트 컴프리헨션 (List comprehension)이나 람다 함수 (Lambda function) 등을 적용할 수도 있습니다.
(리스트 컴프리헨션과 람다 함수에 대해서는 이번 글에서는 언급만 하고 넘어가고, 자세한 내용은 추후 다른 글에서 따로 다뤄보겠습니다)

예시만 살짝 보여드리면, 이게 리스트 컴프리헨션 (List comprehension)의 한 예시이고,

 

이게 람다 함수 (Lambda function)의 예시입니다. 지금은 이해가 안 가실 수 있는데, 그렇구나 정도만 하고 넘어가셔도 좋습니다 :)

 

하지만, 우리는 더 세련된 코드를 짜야만 할 정도로 복잡하고 규모가 큰 연산을 수행할 일이 거의 없을 것이고, 또한 이러한 속도 이슈는 다른 코딩 방법들과 비교했을 때 그렇다는 것이지, 여전히 사람의 처리 속도보다는 비교가 무색할 정도로 훨씬 빠르기 때문에 우리에게 큰 단점이 되지는 않을 것이라고 생각합니다.
오히려 우리 같은 초심자 입장에서는 단점보다는 반복문 사용 시 주의해야 할 점들에 더 유의해야 할 것입니다.

 


 

5. 맺는 말

 

이번 글에서는 반복문이란 무엇인지, 어떤 경우에 활용 가능한지, 그리고 장단점으로는 무엇이 있는지에 대해 간단하게 알아보았습니다. 
다음 글에서는 우리가 반복문을 처음 사용할 때 가장 많이 실수하고, 그렇기 때문에 특히 더 주의해야 할 2가지에 대해 얘기해 보겠습니다.

그러면 오늘 글은 여기서 마치겠습니다.
오늘도 긴 글 읽으시느라 고생 많으셨습니다!

 

리들의 스트러글(struggle)하는 현생, 화이팅입니다!
반응형