서문

정말 오랫만에 포스팅을 한다.

그간 디지털 기록보다는 아날로그 노트에 푹 빠져서 꽤 많은 일기와 이것 저것 생각을 정리한 글들을

잔뜩 만들어두었다.

그러다가 문득, 블로그를 장시간 하지 않았음을 깨달았다.

최근에는 ,

비용 산정을 하는 개발 담당자의 입장에서 생각하다보니 ,

결국 그것이 아키텍쳐나 설계 단으로 생각의 초점이 집중되었고 ,

그 초점은 결국 자료구조와 UML 등 익숙한 것들로 다시 환원되었다.

그렇게 한바퀴를 빙빙 돌아 , 다시 도착한 곳은

다름아닌, 알고리즘 ( 정확히는 코딩 테스트 ) 이다.

전에는 알고리즘과 자료구조가 마치 한몸인 것 처럼 어렴풋이 느꼈지만,

패러다임이나 큰 틀에서 보자면, 전산학의 큰 축 두개라고 할 수 있다.

당연히 이 둘이 만나는 개념이고, 개발자 개인으로 보자면 당연히 둘 다 능숙하거나

깊은 이해가 있으면 정말 좋겠지만, 그런 부분은 차치하고라도

자료구조는 결국 크게 아키텍쳐 설계로 확장되고,

알고리즘을 이해하거나 만들어내는 역량은 결국 시스템의 플로우나 기능단에서 나타나게 된다.

그래디 부치부터 한국의 조영호님 ( <오브젝트> 저자) 까지 이르는 온갖 서적들의 홍수 속을

잠깐 헤엄치고 나니,

마치 게임에서 기획자가 콘텐츠의 등장 빈도나 밸런스를 맞추듯이

알고리즘에 대한 나름의 학습 욕구가 다시 한번, 불타기 시작했다.

본론

그래서 간만에 백준 알고리즘 코딩 테스트 연습 사이트를 켜서 ,

1000 번 문제인 아주 기초적인 구현 수준의 문제를 풀었다.

결과는 다음과 같다.

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main()
{
    string str_1;
    getline(cin, str_1);
    stringstream ss(str_1);

    string str_temp;

    int sum = 0; 
    // 2020-1-26 Lhamed : 0 으로 할당하지 않으면 계산 결과가 이상해진다 ?? 아직 원인 모른다. 
    // 2020-1-26 Lhamed : 일명 쓰레기 값 때문이라는 것을 지인 개발자님으로 부터 들었다. 

    while (ss >> str_temp)
    {
        // 2020-1-26 Lhamed : 공백을 제외하는 검사를 하지 않으면, 공백도 숫자로 변환되어서 더해져 버린다.
        if (str_temp != " " )
        {
            sum += stoi(str_temp);
        }
    }

    cout << sum;
}

위 두 주석은 틀렸거나 에러를 야기한 부분을 고치면서 넣은 것이다.

뭐가 어렵겠나? 싶었던 아주 간단한 코드에서 2 부분이나 오류가 난 것은 유쾌한 경험은 아니나,

좀 더 겸손하고 진지하게 임할 수 있게 해주었고 ,

무엇보다 내가 모르는 부분이 이 부분들을 통해서 드러났기에

전에 모르던 것을 하나 더 배울 수 있었다.