올바른 값을 도출은 했지만, 정해진 시간 내에 동작을 하지 않아 실제 코딩 테스트에서 fail이 나는 경우가 있다. 우리는 이러한 문제를 해결 하기 위해 시간 복잡도 등을 고려하여 알고리즘을 설계해 조금 더 효율적으로 코딩을 할 수 있다.
어떤 문제를 해결하기 위한 절차나 방법.
따라서 각각의 알고리즘에는 정형화 된 flow가 있다.
실생활의 예를 들어 위의 알고리즘 조건이 필요한 이유를 더 명확하게 이해보도록 하자.
- 우리가 아이스크림 가게를 운영한다고 하자. 아이스크림 기계에는 여러가지 맛의 버튼들이 있다. 그 버튼들이 입력이 될 것이다.
- 우리가 초코맛 버튼을 눌렀는데 바닐라맛 아이스크림이 추출된다면 문제가 될 것이다. 따라서, 각 입력에 맞는 올바른 출력이 되어야 한다.
- 명확성이라고 함은 동작 방식이다. 우리가 버튼을 한번 눌렀을 때, 일정량의 아이스크림이 나오거나 버튼을 계속 누르고 있는 동안에만 아이스크림이 나오는 등 동작에 대한 flow가 명확해야 한다.
- 또한, 아이스크림을 한번 뽑아내는 데에 10분 이상이 걸린다면 장사를 할 수 없을 것이다. 10초 이내로 아이스크림을 뽑아내는 등 유한성 내에 출력이 되도록 한다.
- 위의 조건들을 모두 만족하면 동작은 제대로 되겠지만, 아이스크림이 하나에 천원인데 아이스크림을 한번 뽑아내는 데에 전력이 900원 정도가 든다면 이윤을 내기 힘들 것이다. 효율성은 이러한 전력을 줄여주는 거라고 보면 된다.