1-9 알고리즘 문제 다른 코드
1. 현재 학습 진도
몇 챕터/몇 강을 수강 중이신가요?
1-9 알고리즘 더 풀어보기 (1)
2. 어려움을 겪는 부분
문제의 조건이 모든 연산은 왼쪽에서 순서대로 이루어진다. 라고 되어있어, 연산을 해야하는 순간에 가장 최대가 될 수 있는 연산만 골라서 계산한다 라고 떠올려보았습니다.
그렇다면 해당 문제를 greedy로 생각해봐도 괜찮을까요?
아직 진도 초반이지만, 평소 코테 문제를 볼 때 어느 부분에 힌트를 잡고 어떤 알고리즘으로 풀어야하는지에 대해 감이 없는 상태라서 이런 문제들(연산이 순서대로 된다던지, 거스름돈 문제처럼 단위가 결정된다던지)은 greedy로 보면 되는지 여쭙고싶습니다.
아래는 풀이한 코드입니다.
def find_max_plus_or_multiply(array):
answer = array[0]
for n in range(1,len(array)):
if answer + array[n] > answer * array[n]:
answer += array[n]
else:
answer *= array[n]
return answer
result = find_max_plus_or_multiply
print("정답 = 728 현재 풀이 값 =", result([0,3,5,6,1,2,4]))
print("정답 = 8820 현재 풀이 값 =", result([3,2,1,5,9,7,4]))
print("정답 = 270 현재 풀이 값 =", result([1,1,1,3,3,2,5]))
답변 1
2
안녕하세요 깡패 햄스터님!! 좋은 질문 감사합니다
넵 햄스터님의 말씀이 정확합니다!
그리디(Greedy) 알고리즘은 "현재 상황에서 가장 최적의 선택"을 하는 알고리즘입니다. 이 문제는 그리디 알고리즘을 적용하기에 아주 좋은 예시입니다.
문제의 핵심 포인트:
연산은 왼쪽에서 오른쪽으로 순서대로 진행됩니다.
각 단계에서 '+' 또는 '*' 연산 중 최대값을 선택해야 합니다.
그리디 알고리즘을 고려해볼 만한 문제의 특징:
순서가 중요한 경우
각 단계에서 최선의 선택이 전체 최적해로 이어질 수 있는 경우
즉, 이 문제는 그리디 알고리즘의 예시로 볼 수 있습니다! 좋은 질문 감사합니다
수강평 이벤트
0
34
2
코딩테스트 처음인데 이런 공부방법이어도 괜찮을까요
0
70
2
3-3 정렬-2 선택정렬 로직
0
43
2
링크드 리스트 끝에서 k번째 값 출력하기
0
46
2
LinkedList 과제 Fast, slow 포인터
0
50
2
투포인터 시간복잡도
0
53
2
수강평 작성 후 자료
0
53
2
수업교재 링크 오류
2
114
2
프로그래머스에서 제출 후 채점시 틀림ㅠ
0
133
2
1-10 알고리즘 더 풀어보기(2) 질문 있습니다
0
76
2
문제 풀이 방식 관련 질문입니다!
0
88
2
1-5 알고리즘과 친해지기 (2) - 최빈값찾기 질문 있습니다
0
94
2
수업자료 pdf 받고싶습니다
0
108
2
강의 자료 오류 수정
0
75
1
2-10 더하거나 빼거나 관련 질문입니다
0
63
2
3-8 해쉬 -2
0
49
2
Linked List Element Delete Explanation Problem
0
69
2
강의3-4 스택 탑 문제
0
74
2
코드스니펫 입출력 케이스에 오류가 있는것 같아요
0
100
3
링크드 리스트 원소 찾기 구현 방식 질문드립니다.
0
76
2
1874 - 스택 문항
0
81
2
DP Java 예제 자료형 오버플로우 문제
0
100
2
4-9 4주차 숙제중 농심라면 문제
0
111
2
DFS 에서 스택을 사용하는 이유
1
187
3





