- 알고리즘이란?
알고리즘(라틴어, 독일어: Algorithmus, 영어: algorithm )이란 어떠한 문제를 해결하기 위한 여러 동작들의 모임이다. 유한성을 가지며, 언젠가는 끝나야 하는 속성을 가지고 있다. 수학과 컴퓨터 과학에서 알고리즘이란 작동이 일어나게 하는 내재하는 단계적 집합이다. 알고리즘은 연산, 데이터 진행 또는 자동화된 추론을 수행한다.
알고리즘은 다음의 조건을 만족해야 한다.
입력 : 외부에서 제공되는 자료가 0개 이상 존재한다.
출력 : 적어도 2개 이상의 서로 다른 결과를 내어야 한다.(즉 모든 입력에 하나의 출력이 나오면 안됨)
명확성 : 수행 과정은 명확하고 모호하지 않은 명령어로 구성되어야 한다.
유한성(종결성) : 유한 번의 명령어를 수행 후(유한 시간 내)에 종료한다.
효율성 : 모든 과정은 명백하게 실행 가능(검증 가능)한 것이어야 한다.
이번 주간에 백준의 알고리즘 문제를 풀며 공부를 진행했습니다. 1주일간 진행 되는 과정이었기에
난이도가 낮은 문제들을 푸는 과목이구나 생각하고 가볍게 생각했습니다. 히지만 정작 문제를 보고
풀어 보았는데 문장을 보고 코드를 짜라니..? 이건 뭐 논술문제 처럼 자기 스스로 무에서 유를 창조 해야 했습니다.
특별하게도 이번 주간은 기존의 조가 아닌 1회차 내에서 랜덤으로 조를 개편해서 운영되었습니다.
그래서 저희 조는 김은아님, 이호상님, 신한국님 그리고 저 4명이서 이루어 지게 되었는데 이호상님이
상당한 실력자라는것을 알게 되었습니다. 그래서 잘 못푸는 문제나 설명이 어려운 문제들을 알아듣기 쉽게 설명도 도와주시고 본인이 어떻게 공부하는지 꿀팁들도 말해주셨습니다.
이제 2일이 남은 현재 시점에서 아직도 알고리즘에 대해 큰 지식을 얻지 못했고 문제들을 반복해서 풀어보거나 남들이 풀어놓은 문제들을 보면서 코드를 어떻게 짜야하는지 그 흐름을 이해하고 있습니다. 주말내내 보았지만 아직도 감을 크게 잡고 있지 못하고 있습니다. 그래도 앞으로 코딩 할 시간이 많이 남았기때문에 이번주간이 아니더라도 꾸준하게 공부해서 문제를 쉽게 풀어나갈수 있는 발판을 다지고 싶습니다.
What is important is to keep learning, to enjoy challenge, and to tolerate ambiguity. In the end there are no certain answers.
-마티나 호너
Martina Horner