알고리즘

bong bong·2023년 10월 5일

알고리즘

목록 보기
2/31

개념

특정한 문제를 해결하기 위한 명확한 명령의 집합으로서, 주어진 입력에 대하여 유한한 시간 내에 원하는 출력을 생성하는 절차

특정한 문제

알고리즘으로 설계해서 해결할 수 있는 문제

명확한 명령

각 명령은 구체적이고 모호하지 않아야 합니다.

모호한 명령 vs 모호하지 않는 명령

모호한 명령

함수 findElements(배열):
    배열 안의 숫자들을 조합하여
        합이 0이 되는 세 수를 찾아서
            그 세 수를 반환하라

모호하지 않는 명령

함수 findElements(배열):
    결과 = 빈 리스트
    배열을 오름차순 정렬

    for i = 0 to 배열의 길이 - 3 do
        // 중복된 값 건너뛰기
        if i > 0 and 배열[i] == 배열[i-1] then
            continue

        왼쪽 = i + 1
        오른쪽 = 배열의 길이 - 1

        while 왼쪽 < 오른쪽 do
            합 = 배열[i] + 배열[왼쪽] + 배열[오른쪽]

            if 합 == 0 then
                결과에 [배열[i], 배열[왼쪽], 배열[오른쪽]] 추가

                // 중복된 값을 건너뛰기
                while 왼쪽 < 오른쪽 and 배열[왼쪽] == 배열[왼쪽+1] do
                    왼쪽 증가
                end while

                while 왼쪽 < 오른쪽 and 배열[오른쪽] == 배열[오른쪽-1] do
                    오른쪽 감소
                end while

                왼쪽 증가
                오른쪽 감소
            else if 합 < 0 then
                왼쪽 증가
            else
                오른쪽 감소
            end if
        end while
    end for

    결과 반환

입력과 출력

  • Input : 알고리즘은 0개 이상의 입력을 받을 수 있습니다. (입력이 비어있을 수도 있습니다.)
  • Output : 하나 이상의 출력을 반환합니다. 이 출력은 입력에 대한 해답이며, 원하는 결과를 나타냅니다.

유한한 시간

  • 알고리즘이란 항상 종료되어야 합니다. 무한히 반복되는 것은 알고리즘이 아닙니다.
  • 유한한 시간 안에 원하는 결과를 반환해야 합니다.

profile
let's go invent tomorrow rather than worrying about what happened yesterday - Steven Paul Jobs

0개의 댓글