이전 글에서 정의한 알고리즘을 만들었다고 하자. 그런데 이 알고리즘을 어떻게 평가할까? 단순히 빨리 푸는게 성능이 좋을까? 알고즘의 성능은 다음의 기준으로 평가한다.
●정확성: 풀고자하는 바를 유한한 시간내에 올바른 답을 냈는가
●최적성: 이것보다 더 적은 작업량을 가진 알고리즘은 없는가
●공간 복잡도: 메모리를 얼마나 적게 써서 답을 냈는가
●시간 복잡도: 자료의 양 n이 증가할 때 시간이 증가하는 대략적인 비율이 얼마나 적은가
이중에서 시간복잡도를 O로 표기하는데 예를들어 O(n)이라 하면 n에 비례하게 시간이 증가한다는 것이다. O(n)이 좋으며 O(n log(n))정도도 괜찮다. O(1)이면 자료가 많아져도 시간변화가 없으며 가장좋다. 검색 알고리즘은 대부분 O(1)이나 O(log(n))이다. 헌데, O(n!)이거나 O(2^n)의 경우 자료가 조금만 많아져도 시간이 기하급수적으로 많아지기에 포기하고 근사값을 구하는 알고리즘을 구해야한다.
시간이 특정 형식에 맞추어 입력될 때 그대로 출력하는 프로그램을 작성 해보자.
시(hour)와 분(minute)이 ":"(콜론)으로 구분되어 입력된다.
입력받은 시간을 "시:분"으로 출력한다.
3:16
3:16
scanf( ) 함수는 형식(format)에 맞추어 입력 받는 함수이기 때문에 입력 받고자 하는 형식에 맞게 적어주면 된다.
[예시]
scanf("%d:%d", &h, &m); //h와 m에 값이 10진수로 저장된다.
파이썬에선
a,b=input().split(":")
이다. 눈치 챘는지 모르겠지만 split("문자") 는 문자를 기준으로 문자열을 나눈다.
이전에 공백을 두고 정수 두개가 입력되는 문제에서 a=input().split(" ")이라 했다.
이것 또한 공백을 기준으로 문자를 나누었는데, 리스트 안에 나눈 두 문자를 집어넣었다.
리스트는 후에 추가로 다루겠다.
'Programming > Codeup.kr기초100제 && 컴퓨터 이야기' 카테고리의 다른 글
[기초-입출력] 주민번호 입력받아 형태 바꿔 출력하기 && 메모리2 (0) | 2016.11.11 |
---|---|
[기초-입출력] 년월일 입력받아 형식에 맞게 출력하기 && 메모리1 (0) | 2016.11.10 |
[기초-입출력] 정수 한 개 입력받아 세 번 출력하기 && 알고리즘 정의 (0) | 2016.11.07 |
[기초-입출력] 실수 한 개 입력받아 소수점 이하 둘째 자리까지 출력하기 && 코딩과 프로그래밍 (0) | 2016.11.06 |
[기초-입출력] 문자 두 개 입력받아 순서 바꿔 출력하기 && 코딩스타일-괄호 및 띄어쓰기 (0) | 2016.11.05 |