최댓값,최소값, 절대값 응용 (엘리베이터)

gyeorrr·2023년 1월 13일
0

주의할점

문제를 풀기전에 잘 읽어보고 정리를 한 뒤 풀자 해석이 제일중요함!!
최대값과 최소값을 구하는 형식이 여기서 되게 잘 나와있다 참고하자
절대값의 방법엔 여러가지가 있다 밑에서 확인

풀이

현재 층수를 입력받아서, 가장 가까운 엘리베이터가 이동하는 코드를 만들어보세요

import random

e1 = random.randrange(1,16)
e2 = random.randrange(1,16)
e3 = random.randrange(1,16)

`print(f'A : {e1}층, B : {e2}층, C : {e3}층')`

1) 사용자에게 현재 층수를 입력 받는다

`currentFloor = int(input('현재 층 :'))`

2) 각 엘리베이터와 현재 층수의 거리를 구한다
d1 = currentFloor - e1      # 먼저 차이를 구하고
d2 = currentFloor - e2
d3 = currentFloor - e3
if d1 <0:       d1 = -d1    # 절대값으로 처리한다
if d2 <0:       d1 = -d2
if d3 <0:       d1 = -d3

d1이 음수인것과 상관없이, 이후 d2나 d3도 검사해야한다

3) 구해진 3개의 거리값중 가장 작은 값을 구한다 ★

mindistance = d1

if d2 < mindistance:   mindistance = d2
if d3 < mindistance:   mindistance = d3

하나의 값을 또다시 변수선언하고 d2가 d1보다 작다면 그변수를 작은수로 변수선언 또 if 를 써서 d3가 그변수선언한 것 보다 값이 작다면 d3가 그자리를 대체 와 나는 진짜 이런 방법은 생각도 못했다

최소값 또는 최대값을 구할 때 이방법을 응용하면 정말 좋은 것 같다 나는 어떻게 풀었었냐면

if d1 <= d2 and d1 <= d3:
    result = 'A'
elif d2 <= d3:
    result = 'B'
else:
    result = 'C' 

d1 이 d2 보다 작거나 같고, d1이 d3보다 작거나 같다면 A출력 아니면 d2 가 d3 보다 작거나 같다면 B출력 아니면 C출력 인데 현저히 가독성이 낮다.

4) 거리가 최소인 엘리베이터를 화면에 출력한다
ex) A 엘리베이터가 이동합니다
ex) B 엘리베이터가 이동합니다

if mindistance == d1 :    print('A',end='')
elif mindistance == d2 :  print('B',end='')
else:                     print('C',end='')

print('엘리베이터가 이동합니다')

내가 알고있는 절대값 만드는법

N = input('수를 입력하시오')
if N < 0 : N = -N
또는
if N < 0 : N = N * -1
또는
if N < 0 : N *= -1

보니까 abs 명령어도 있는 것 같은데 아직 배우지 않았으니 패스

0개의 댓글