알고리즘 시작

Kongsub·2020년 2월 6일
0

Algorithm

목록 보기
2/10

알고리즘 정의

알고리즘(라틴어, 독일어: Algorithmus, 영어: algorithm 알고리듬[*], IPA: [ǽlɡərìðm])은 수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미한다.
출처 : https://en.wikipedia.org/wiki/Algorithm

알고리즘을 잘하기 위해서는 알고리즘 문제를 많이 풀어봐야한다.
알고리즘 개념을 접하고 바로 문제푸는 것이 가장 효율적인 공부 방법이다.

시간복잡도

프로그램의 수행시간에 대해 최악의 경우에 있어 시간이 얼마나 걸리는지 나타내는 표기법.
주로 빅오(Big O) 표기법을 사용한다.
입력의 크기 N에 대해서 나타낸다.
ex) O(N) : N의 시간복잡도를 나타냄 .
알고리즘에서 시간복잡도를 줄이는 것은 아주아주 중요한 일이다.

공간복잡도

공간복잡도는 메모리 용량에 관한 것이다.
주로 가장 많은 공간을 차지하는 것은 배열이다.

c++의 입출력

  • c++에서 cin/cout보다 scanf/printf가 더 빠르다.
  • c++에서 cin/cout을 빠르게 하고싶다면 아래의 코드 세줄을 추가하면 된다.
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);

주의 : 위의 코드를 쓸땐 scanf/printf사용이 불가하다.

  • 개행을 삽입하고자 할때, endl을 사용하는 것보다 '/n'을 추가하는 것이 더 빠르다.

Tip

  • Test Case로 문제가 주어진 경우, 입출력을 동시에 적용하는 것이 빠르다.
    (case마다 별도의 문제인것 마냥 풀고 입력의 크기대로 반복문을 돌리면 된다.)
  • 입력의 크기가 주어지지 않은 경우, 입력을 EOF가 들어오기 전까지 받으면 수월하다.
• C : while (scanf("%d %d",&a,&b) == 2) 
• C++ : while(cin>>a>>b)
• Java : while(sc.hasNextInt()) 
profile
심은대로 거둔다

0개의 댓글