알고리즘과 친해지기 1 - 최댓값 찾기 문제
: 배열 안에 있는 요소 중에서 최댓값을 찾아 반환하는 문제
1) 의사코드(수도코드)
- 최댓값을 담을 변수 => max
- 배열의 요소들을 하나씩 빼온다. => for 반복문
- 값을 비교해서 더 큰 값을 max 변수에 담는다. => if문
- 최댓값을 담은 max 변수의 값을 return 한다.
2) 코드 구현
input = [3, 5, 6, 1, 2, 4]
def find_max_num(array):
# 큰 값을 담을 변수
max = 0
# or max = array[0]도 가능하다.
# 배열에 값들을 하나씩 뽑아온다.
for num in array:
# 값을 비교해서 더 큰 값을 변수에 담는다.
if(max < num):
max = num
return max
result = find_max_num(input)
print(result)
선생님의 첫번째 풀이 방법
-> 이중 반복문을 사용한다.
input = [3, 5, 6, 1, 2, 4]
def find_max_num(array):
# 배열에 값들을 하나씩 뽑아온다.
for num in array:
# 배열에 값들을 하나씩 뽑아온다.
for compare_num in array:
# num과 compare_num을 비교한다.
if num < compare_num:
break
# 안에 있는 for문을 끝낸다.
else:
return num
result = find_max_num(input)
print(result)
선생님의 두번째 풀이 방법
-> 지정 변수를 사용한다.
input = [3, 5, 6, 1, 2, 4]
def find_max_num(array):
# 지정 변수를 사용한다.
max_num = array[0]
# 초기값 설정
# 반복문을 돌려서 배열에 요소를 빼온다.
for num in array:
# 값을 비교해서 더 큰 값을 max_num에 넣는다.
if num > max_num:
max_num = num
return max_num
result = find_max_num(input)
print(result)
내가 생각 했을 때는 둘 중 더 효율적인 방법은 두번째 방법인 것 같다.
이중 for문을 사용하면 같은 값을 뽑아와서 비교하기 때문에 시도 횟수가 한번씩 늘어난다.
그렇기 때문에 지정 변수를 사용해서 초깃값을 정하고 for문을 한번만 사용해서 최댓값을 구하는 게 더 효율적인 것 같다.
'항해 중 > 알고 보면 알기 쉬운 알고리즘' 카테고리의 다른 글
공간 복잡도 판단하기 (0) | 2021.11.12 |
---|---|
시간 복잡도 판단하기 (0) | 2021.11.12 |
최빈값 찾기 (0) | 2021.11.12 |
알파벳 빈도수 세기 (0) | 2021.11.12 |
알고리즘이란? (0) | 2021.11.12 |
댓글