※ 이전글
[파이썬으로 알고리즘배우기-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))
'Algorithm' 카테고리의 다른 글
[파이썬으로 알고리즘배우기-4] 1~N 숫자더하기 (0) | 2021.02.09 |
---|---|
[파이썬으로 알고리즘배우기-2] 최소값 구하기 (0) | 2021.02.07 |
[파이썬으로 알고리즘배우기-1] 최대값 구하기 (0) | 2021.02.06 |
[파이썬으로 알고리즘배우기] 연재에 앞서.. (0) | 2021.02.05 |
댓글