개인 공부/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)
- 사용자에게 숫자를 입력받는데 리스트에 담아야 한다. 숫자만 따로 리스트에 담아야 하기 때문에 공백을 같이 넣는데, 공백을 리스트에 넣을 필요는 없기 때문에 split()으로 공백을 없앤다
- 리스트의 첫 번째 값을 임의의 변수에 넣는다. 최소값을 구하기 위해 만든 변수다
- 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이 출력되는 걸 볼 수 있다. 저 숫자들 말고 다른 숫자들을 넣어도 같은 결과가 나온다.
반응형