Algorithm

Seoyong Lee·2021년 5월 4일
0
post-thumbnail

알고리즘

A set of finite instructions that solve the problem.

알고리즘(algorithm)은 수학과 컴퓨터 과학 등의 분야에서 문제 해결에 필요한 계산 절차 또는 처리 과정을 뜻한다. 쉽게 말하면 우리가 어떠한 문제를 만났을 때, 그러한 문제를 해결하는 과정이 바로 알고리즘이다.

다음은 좋은 알고리즘이 되기 위한 특징이다.

  • 입력 : 정의된 입력을 받아들일 수 있어야 한다.
  • 출력 : 답으로 출력을 내보낼 수 있어야 한다.
  • 정밀성 : 변하지 않는 명확한 작업 단계를 가져야 한다.
  • 유일성 : 단계마다 명확한 다음 단계를 가져야 한다.
  • 유한성 : 특정 수의 작업 이후에 정지해야 한다.
  • 타당성 : 구현할 수 있고 실용적이어야 한다.
  • 일반성 : 정의된 입력들에 일반적으로 적용할 수 있어야 한다.

알고리즘과 코딩테스트

이러한 알고리즘은 현재 코딩테스트를 통해 입사 시 필수적으로 검증하는 능력이 되었다. 그러나 이러한 테스트가 과연 실효성을 가지느냐에 대한 논란이 되고 있는데, 10년 차 개발자가 바라본 입장에선 알고리즘 능력과 실제 문제를 찾아내고 해결하는 두 능력은 다르다고 한다.

그렇다면 이러한 알고리즘으로 코딩 능력을 테스트하는 것이 유효한가? 이에 대한 의견은 대체로 다음과 같이 나뉘는 것을 볼 수 있다.

  • 필요 없다는 입장
    창의력보다는 반복훈련에 의한 결과
    외국은 기술테스트 비중이 더 높으며, 코딩 실력은 수습 중에 충분히 확인 가능
    실제 업무 능력과 큰 연관성이 없음

  • 필요하다는 입장
    국내 IT업계의 트렌드
    특정 분야의 실무에선 알고리즘 능력이 중요함(데이터, 인공지능, 금융업 등)
    사원 선발 과정에서 변별력 있는 테스트가 필요

그러나 현실은 알고리즘

여러 논란이 있지만, 국내 IT 기업들은 현재까지 코딩 테스트를 통해 사람을 뽑고 있다. 만약 이러한 기업 중 하나에 개발자로 입사하는 것이 목표라면 어쩔 수 없이 그 룰을 받아들이는 수밖에 없다. 마치 싫어도 수능을 봐야 대학을 가는 것처럼 말이다!

만약 더 확실하게 코딩 능력을 테스트할 방법이 등장한다면 미래에는 그 방법이 업계의 표준으로 퍼질 것이다. 그러나 아직 IT업계는 알고리즘을 코딩 능력을 평가하는 대표적인 기준으로 보고 있다.

참고
위키백과 - 알고리즘
치킨모임 배진호님의 브런치 - 알고리즘이 필요한 '진짜' 이유에 대해서
라이언님의 블로그 - 코딩테스트는 곧 사라질 것

profile
코드를 디자인하다

0개의 댓글