서문
정말 오랫만에 포스팅을 한다.
그간 디지털 기록보다는 아날로그 노트에 푹 빠져서 꽤 많은 일기와 이것 저것 생각을 정리한 글들을
잔뜩 만들어두었다.
그러다가 문득, 블로그를 장시간 하지 않았음을 깨달았다.
최근에는 ,
비용 산정을 하는 개발 담당자의 입장에서 생각하다보니 ,
결국 그것이 아키텍쳐나 설계 단으로 생각의 초점이 집중되었고 ,
그 초점은 결국 자료구조와 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 부분이나 오류가 난 것은 유쾌한 경험은 아니나,
좀 더 겸손하고 진지하게 임할 수 있게 해주었고 ,
무엇보다 내가 모르는 부분이 이 부분들을 통해서 드러났기에
전에 모르던 것을 하나 더 배울 수 있었다.