본문 바로가기
Algorithm

[파이썬으로 알고리즘배우기-3] 중간값 구하기

by 노마드공학자 2021. 2. 8.

※ 이전글

[파이썬으로 알고리즘배우기-1] 최대값 구하기

[파이썬으로 알고리즘배우기-2] 최소값 구하기

 

※이 전글에서 정리한 코드/개념은 재설명하지 않으므로, 참고부탁드립니다

※해당 글은 PC에서 보기에 최적화 되어있습니다.


 

"a,b,c 3개의 숫자들중 중간값을 찾는 알고리즘을 구현해보기"

(a,b,c의 평균값이 아니라 a,b,c중 2번째(중간)로 큰값을 찾는문제)

 

 


① 각각의 모든 케이스에 대해 비교해보기

 

a>b이고, b>c이면 중간값 = b

a<b이고, a>c이면 중간값 = c

 

a>c이고, c>b이면 중간값 = c

a<c이고, a>b이면 중간값 = a

 

 

[알고리즘 설명]

a가 b보다 작거나 큰경우, a가 c보다 작거나 큰경우 크게 2가지를 줄기로, 세부적으로 각각의 대소를 비교하여

중간값을 찾는 코드입니다.

 

[코드]

a = 10

b = -7

c = 13

 

median = 0;

 

if(a>b) : 

    if(b>c) : median = b;

else :

    if(a>c) : median = a;

 

if(a>c) :

    if(c>b) : median = c;

else :

    if(a>b) : median = a;

 

print(median)

 

② 이중조건문

 

 

[알고리즘 설명]

이중조건문을 통해 1번에서 구현했던 총 4개의 조건문을 2개로 분류한 코드입니다.

C언어의 &&는 python에서 "and"에 대응되고, ||는 "or"에 해당합니다.

즉, 교집합은 "and", 합집합은 "or"로 적어주시면 됩니다.

 

해당코드는

b<a<c or c<a<b 인경우, 중간값 = a

c<b<a or a<b<c 인경우, 중간값 = b

나머지 경우, 중간값 = c

를 의미합니다.

 

[코드]

def median(a,b,c) :

    medi = 0;

    if(b>a and a>c) or (b<a and a<c) :

        medi = a;

    elif(a>b and b>c) or (a<b and b<c) :

        medi = b;

    else :

        medi = c;

    return medi

 

print(median(10,-3,7))

 

 

③ if-elif-else를 잘활용한 코드

 

 

[알고리즘 설명]

이 코드는 if - elseif(elif) - else에 대한 정확한 이해가 필요합니다.

즉, 이 알고리즘을 완벽하게 이해하셨다면, if조건문에 대한 예제는 왠만하면 푸실 수 있으실것으로 생각되는데요,

 

이 알고리즘은 위에 2개 코드에서 다루었던 내용을 합쳐놓은것으로,

한번 직접 해석해보시길 권장드립니다.

 

※ 이부분만 유념해주시면됩니다.

 

if A-> elif B로 간다는것은, if문에서 걸러지지 않은 값들이 가는것입니다.

즉, if A -> if B 는 A조건문을 통과시키고, 처음부터다시 B조건문을 통과시키는것인반면,

if A -> elif B는 A조건문을 통과하지 않는 경우들에 대해서만, B조건문을 통과시키겠다 는 의미입니다.

 

[코드]

def median2(a,b,c):

    medi = 0

 

    if(a>b) : 

        if(b>c) :

            medi = b

        elif (c>a) :

            medi = a

        else :

            medi = c

    

    elif(a>c) : 

        medi = a

    elif(b>c) :

        medi = b

    else :

        medi = c

        

    return medi



print(median2(10,-3,7))

댓글