알고리즘(라틴어, 독일어: Algorithmus, 영어: algorithm 알고리듬[*], IPA: [ǽlɡərìðm])은 수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미한다.
출처 : https://en.wikipedia.org/wiki/Algorithm
알고리즘을 잘하기 위해서는 알고리즘 문제를 많이 풀어봐야한다.
알고리즘 개념을 접하고 바로 문제푸는 것이 가장 효율적인 공부 방법이다.
프로그램의 수행시간에 대해 최악의 경우에 있어 시간이 얼마나 걸리는지 나타내는 표기법.
주로 빅오(Big O) 표기법을 사용한다.
입력의 크기 N에 대해서 나타낸다.
ex) O(N) : N의 시간복잡도를 나타냄 .
알고리즘에서 시간복잡도를 줄이는 것은 아주아주 중요한 일이다.
공간복잡도는 메모리 용량에 관한 것이다.
주로 가장 많은 공간을 차지하는 것은 배열이다.
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
주의 : 위의 코드를 쓸땐 scanf/printf사용이 불가하다.
• C : while (scanf("%d %d",&a,&b) == 2)
• C++ : while(cin>>a>>b)
• Java : while(sc.hasNextInt())