[코딩 테스트] 재귀함수

1. 팩토리얼

팩토리얼은 n!으로 1부터 특정 숫자까지의 수를 모두 곱하는 것입니다. 예를 들어 5!은 1x2x3x4x5=120으로 나타냅니다.

수식으로 표현하면 다음과 같습니다.

$$F_{n}=n*F_{n-1}$$

따라서 재귀함수로 나타내기 위해서 다음과 같은 규칙을 지정합니다.

  • 종료조건: 1이 되었을 때 1을 return
  • 반복수식: $F_{n}=n*F_{n-1}$
int factorial(int num) { if(num <= 1) { return 1; } return num*factorial(n-1);}

처음 코드를 짰을 때 조건식을 num == 1으로 했었는데, 이럴 경우 num이 0이면 무한루프에 빠지기 때문에, 종료조건을 잘 지정해 줘야 한다는... read more

C++ 코딩 테스트 입출력 시간을 좀 더 줄이는 방법

ios_base::sync_with_stdio(false)

ios_base::sync_with_stdio(false)의 의미는 C에서의 입출력 라이브러리 stdio와 C++에서의 입출력 라이브러리 iostream의 버퍼 동기화를 분리하는 역할입니다.

장점

cin과 cout은 C의 stdio의 입출력함수 printf, scanf와 버퍼를 동기화하고 있어 ios_base::sync_with_stdio(false) 함수를 통해서 버퍼를 분리하여 C++만의 버퍼를 사용합니다. 검사할 버퍼의 크기가 줄어듦으로서 속도 향상의 이점을 누릴 수 있습니다.

단점

stdio와 iostream의 버퍼를 분리하였으므로 C언어에서의 입출력 함수(printf, scanf, getchar, puts, putchar 등)들을 사용하지 못합니다.

cin.tie(NULL)

cin.tie(NULL)은 cin과 cout의 tie를 풀어준다는 의미입니다. cin과 cout은 기본적으로 tie되어 있어 cin을 사용하기 전에 cout에서 출력할 값을 내보내서 “Enter name:” 을 출력합니다. 이때 출력할 값을 버퍼에서 내보내는 것을 플러시(flush)라고 합니다. cin과 cout 둘 중 한쪽만 untie해도 두쪽 다 untie된 것이므로 cin.tie(NULL);... read more

자주쓰는 git 명령어 정리

사용해본 git 명령어 정리

git init : git 공간 만들기
git clone : git repository로부터 다운로드(깃 공간까지)
git add . : 깃 공간의 변경사항 전부 추가(저장후보) (잘몰겟음)
git commit -m ‘(커밋 메시지)’ : git add로 추가한 내용들 local에 업로드
git push : local -> remote로 업로드
git status : 깃 공간의 현재상태(커밋내용, 현재 브랜치 등)
git branch : 현재 깃 공간(local)의 브랜치 보기
git log : 현재 브랜치의 커밋 목록들 보기(q 누르면 종료, enter 누르면 계속 보여줌)
-v : 브랜치 상세정보, 마지막 커밋 메시지 확인
-r : 리모트 공간의 브랜치 보기
-a : 로컬, 리모트 브랜치 다 보기
–delete, -d... read more