알고리즘을 준비하시나요? 요즘 기업의 채용 과정에서 코딩테스트가 생겨서 다들 알고리즘 준비하실거라 생각이 드네요. 저같은 경우는 주로 javascript를 쓰지만 자바스크립트는 제어하기 위한 언어라 생각합니다. 그래서 저같은 경우는 자바스트립트 대신에 성능도 좋고 예시도 많은 c++을 씁니다. 물론 자바도 할 수 있긴 하겠지만 자바는... 흠.. 흥미롭네요


''(작은 따옴표)와 ""(큰 따옴표)의 차이

먼저 이 작은 따옴표와 큰 따옴표 자바스크립트를 하신 분들은 아실텐데요. 자바스크립트에선 별 차이 없습니다. 그리고 그 기준을 그대로 c++로 가져가면 안됩니다! 왜냐하면 ""는 const char * 형식이 되어 즉 문자열이죠 문자열이 되어 문자 == ""가 되지 않습니다.

char buffer;
cin >> buffer;
if(buffer == "a"){
  cout<<"에러나는 코드";
}
if(buffer == 'a') {
  cout<<"정상 코드";
}

문장 전체를 입력 받을 때

cin은 뛰어쓰기 단위로 입력을 받습니다. 이때 만약 이런 문장을 통째로 입력 받아야 한다. 그럼 어떨까요?

hello world I'am programmer

음 대략 난감하네요... 이때는 이렇게 입력을 받습니다.

string str;
getline(cin,str)

이렇게 짜시면 라인을 통째로 입력을 받을 수 있습니다. 그리고 당연히 str로 입력값이 가게 됩니다.


제한시간에 걸릴 때

알고리즘은 성능을 요구합니다. 그리고 최적화를 했다고 알고리즘을 두 세번 엎을 수 있습니다. 이때 가장 먼저 볼 것을 체크해 볼까요?

1. 현재 내 알고리즘의 복잡도를 확인한다.
2. 문제가 없다면 입출력 함수를 바꾸자
3. 반복적으로 endl을 쓴다면 개행문자(`\n`)로 바꾸자

현재 컴퓨터 성능으로 1000000번의 연산이 1초라고 생각하시면 됩니다. 그럼 시간제한을 보기 용이하겠죠? 그리고 또한 scanf와 printf는 꽤나 괜찮은 선택지입니다. 그리고 타협하기 싫다하시면 endl대신에 개행문자를 써보세요. 통과할 수 있습니다.


c++의 stack 유의점

c++ stack은 pop이 어떠한 것도 반환 하지 않습니다. 그리고 또한 top이란 함수는 비어있을 때 접근하면 에러가 나니 조심하세요!

이상으로 알고리즘 c++유의점을 살펴보았습니다. 중간마다 업데이트가 될 수 있습니다.


이런 글은 어떠세요?


알아두면 좋은 자바스크립트!

TutorialJavascriptEcmaScript

쉽게 접근하는 깃 & 깃허브 1

TutorialGithubGit

Leetcode를 플러그인을 써서 정복하자

SharingLeetCodeAlgorithm

Coursera "kotlin for java developers" Module 3 리뷰

CourseReviewKotlinStudyReview