본문 바로가기

[기초-입출력] 시간 입력받아 그대로 출력하기 && 알고리즘의 성능 이전 글에서 정의한 알고리즘을 만들었다고 하자. 그런데 이 알고리즘을 어떻게 평가할까? 단순히 빨리 푸는게 성능이 좋을까? 알고즘의 성능은 다음의 기준으로 평가한다. ●정확성: 풀고자하는 바를 유한한 시간내에 올바른 답을 냈는가 ●최적성: 이것보다 더 적은 작업량을 가진 알고리즘은 없는가 ●공간 복잡도: 메모리를 얼마나 적게 써서 답을 냈는가 ●시간 복잡도: 자료의 양 n이 증가할 때 시간이 증가하는 대략적인 비율이 얼마나 적은가 이중에서 시간복잡도를 O로 표기하는데 예를들어 O(n)이라 하면 n에 비례하게 시간이 증가한다는 것이다. O(n)이 좋으며 O(n log(n))정도도 괜찮다. O(1)이면 자료가 많아져도 시간변화가 없으며 가장좋다. 검색 알고리즘은 대부분 O(1)이나 O(log(n))이다. 헌.. 더보기
[기초-입출력] 정수 한 개 입력받아 세 번 출력하기 && 알고리즘 정의 알고리즘이란 어떤 문제를 해결하기 위한 여러 동작들의 모임이다. 유한성을 가지며 언젠가는 끝나야 한다. 또 알고리즘은 다음 조건을 만족해야 한다. ●입력: 0또는 외부에서 제공된 자료가 존재 ●출력: 최소 1개이상의 결과 ●명확성: 단계가 명확하고 애매함이 없음 ●유한성: 유한한 횟수로 문제 해결 ●효율성: 사람이 할 수 있을 정도로 충분히 단순함 즉, 어떤 입력에대해 유한하 시간동안 명확하고 효과적으로 결과를 도출할 수 있다면 알고리즘으로 본다.문제 설명정수(integer) 한 개를 입력받아 3번 출력해보자.입력정수 한 개가 입력된다.출력입력받은 정수를 공백으로 구분해 세 번 출력한다.입력 예시125출력 예시125 125 125도움말printf("%d %d %d", a, a, a); 와 같은 방법으로 .. 더보기
[기초-입출력] 실수 한 개 입력받아 소수점 이하 둘째 자리까지 출력하기 && 코딩과 프로그래밍 코딩과 프로그래밍을 같은 것으로 보는 사람도 있고, 아닌 사람도 있다. 나는 둘을 다르다고 보는 사람 중 하나이다.둘 다 알고리즘을 프로그래밍 언어를 통해 구체적인 프로그램으로 만들기에 결과만 보면 같다. 하지만, 이 둘은 내가 생각하기에 큰 차이가 있다. 코딩은 프로그램뒤에서 실제로 동작하고 명령들이 수행되어지는 역할을 짜는 것이다. 반면, 프로그래밍은 유저에게 더 편리한 인터페이스를 제공한다거나 눈에 보기 좋게 디자인하고 정돈하며 코딩까지 포함한 모든 프로그램만드는 작업을 일컫는다. 무엇이 좋다 나쁘다 라고 말할 수 없다. 우리 모두 처음엔 코더였고, 프로그래밍 언어도 언어이기 때문에 완벽하게 알 수는 없는 것이다. 다만, 무작정 남의 코드를 배끼기보단 그 코드가 왜 그런지 이해하여 쓰여지고, 파생하.. 더보기