관리 메뉴

나만을 위한 블로그

[Algorithm] 최소값, 최대값 구하기 본문

개인 공부/Algorithm

[Algorithm] 최소값, 최대값 구하기

참깨빵위에참깨빵_ 2022. 12. 5. 20:03
728x90
반응형

공백이 포함된 숫자들을 입력받아서 이 중 최소값, 최대값을 구하는 예제다.

min(), max()가 있긴 하지만 이를 사용하지 않고 어떻게 구하는지 확인해 본다.

먼저 공백을 포함해서 여러 숫자들을 받으면 숫자들만 갖고 있어야 하니까 여러 숫자들을 담을 수 있는 리스트를 쓰는 게 나을 것이다. 파이썬으로 작성한다면 아래와 같다.

 

li = list(map(int, input("숫자 입력 : ").split()))

m = li[0]

for i in li:
    if i < m:
        m = i

print(m)

 

  1. 사용자에게 숫자를 입력받는데 리스트에 담아야 한다. 숫자만 따로 리스트에 담아야 하기 때문에 공백을 같이 넣는데, 공백을 리스트에 넣을 필요는 없기 때문에 split()으로 공백을 없앤다
  2. 리스트의 첫 번째 값을 임의의 변수에 넣는다. 최소값을 구하기 위해 만든 변수다
  3. for문으로 리스트 내부를 돌면서 리스트의 첫 번째 값과 리스트 내부의 값들을 하나씩 비교한다. 만약 리스트 안에서 임의의 변수값보다 작은 숫자를 발견했을 경우, 임의의 변수에 발견한 작은 숫자를 넣는다. 이 과정을 반복하면 임의의 변수 m에는 리스트에서 가장 작은 숫자만 담기게 된다

 

코틀린으로 짜면 아래와 같다.

 

fun main() = with(System.`in`.bufferedReader()) {
    print("num : ")
    val num = readLine().split(" ")
    var m = num[0]

    for (i in num) {
        if (i < m) {
            m = i
        }
    }
    print(m)
}

 

이 코드를 실행하면 아래와 같이 작동한다.

 

 

그럼 최대값을 구하려면 어떻게 해야 할까? 최소값을 구할 때 반복문 내부에서 리스트에 들어있는 값(i)을 임의의 변수(m)와 비교해 리스트에 들어있는 값이 작으면 변수에 담았으니 if문의 조건을 거꾸로 하면 될 것이다.

 

li = list(map(int, input("숫자 입력 : ").split()))

m = li[0]

for i in li:
    if i > m:
        m = i

print(m)

 

그리고 위에서 실행했을 때와 같은 숫자들을 넣으면 어떻게 실행되는지 보자.

 

 

넣은 숫자들 중 201이 가장 큰 숫자기 때문에 print()로 임의의 변수를 출력하면 가장 큰 숫자인 201이 출력되는 걸 볼 수 있다. 저 숫자들 말고 다른 숫자들을 넣어도 같은 결과가 나온다.

반응형
Comments