Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- Runwith
- serializtion
- 알고리즘
- 정적분석도구
- 연계방식
- 일기
- 코딩테스트
- diary
- JUnit5
- 테스트
- useRef
- LRS
- playgroundAI
- Live Template
- extendwith
- 부하 테스트
- 소스코드품질
- notempty
- JUnit
- git
- 영어일기
- git 오류
- 백준
- application.yml
- 데이터 거버넌스
- AI그림
- 데이터 직렬화
- 파이썬
- xapi
- 스택
Archives
- Today
- Total
HanSol's Oak Cask
특정 요소가 다른 모든 요소의 합보다 큰 지 판별하는 방법 본문
코딩을 하다 보면 **"리스트(배열)에서 특정 요소가 나머지 모든 요소의 합보다 큰지 확인하는 문제"**를 만나는 경우가 많습니다.
이런 문제를 더 빠르고, 간결하게 해결할 수 있는 방법을 정리해보겠습니다. 🎯
✅ 1. 비효율적인 방식 (if 문 여러 개 사용)
가장 흔한 실수는 모든 요소를 각각 비교하는 방식입니다.
arr = [5, 2, 3]
if arr[0] >= arr[1] + arr[2]:
print("특정 요소가 다른 요소의 합보다 크다.")
elif arr[1] >= arr[0] + arr[2]:
print("특정 요소가 다른 요소의 합보다 크다.")
elif arr[2] >= arr[0] + arr[1]:
print("특정 요소가 다른 요소의 합보다 크다.")
✔ 문제점:
- 비효율적 → if 문이 많아질수록 코드가 길어짐.
- 가독성이 떨어짐 → 한 번에 직관적으로 이해하기 어려움.
- 확장성 부족 → 요소 개수가 많아지면 비교해야 할 if 문이 더 늘어남.
✅ 2. max() 활용 (더 간결한 방식)
max() 함수를 사용하면 리스트에서 가장 큰 값을 한 번에 찾을 수 있음.
arr = [5, 2, 3]
max_value = max(arr) # 가장 큰 값 찾기
arr.remove(max_value) # 해당 값을 리스트에서 제거
if max_value >= sum(arr): # 나머지 요소들의 합과 비교
print("특정 요소가 다른 요소들의 합보다 크다.")
✔ 개선된 점:
- max()를 사용하여 가장 큰 값을 한 번에 찾음.
- 리스트에서 해당 값을 제거한 후 나머지 값들의 합과 비교.
- 확장 가능 → 요소가 더 많아져도 동일한 방식으로 처리 가능.
- 코드가 짧고 직관적 → 가독성이 높아짐.
✅ 3. sort() 활용 (더 직관적인 방법)
리스트를 정렬하면 가장 큰 값이 항상 마지막 요소가 됨.
arr = [5, 2, 3]
arr.sort() # 정렬하여 가장 큰 값을 마지막 요소로 배치
if arr[-1] >= sum(arr[:-1]): # 가장 큰 값과 나머지 요소들의 합 비교
print("특정 요소가 다른 요소들의 합보다 크다.")
✔ 장점:
- sort()를 사용하면 가장 큰 요소가 항상 리스트의 마지막 요소가 됨.
- 나머지 요소들의 합은 슬라이싱(arr[:-1])을 사용해 간편하게 구할 수 있음.
- remove() 방식보다 더 효율적이고 직관적.
✅ 4. 일반화된 코드 (N개의 요소가 있을 때)
def is_largest_greater_than_others(arr):
arr.sort()
return arr[-1] >= sum(arr[:-1])
# 예제 테스트
test_cases = [
[5, 2, 3], # 5 >= 2 + 3 → True
[10, 4, 6, 2], # 10 >= 4 + 6 + 2 → True
[8, 3, 2, 2], # 8 >= 3 + 2 + 2 → False
]
for case in test_cases:
print(f"{case}: {is_largest_greater_than_others(case)}")
✔ 이제 어떤 길이의 리스트든 이 함수를 사용하면 쉽게 판별할 수 있음! 🎯
🚀 결론
방법 코드 길이 가독성 성능 (O)
| if 문 여러 개 사용 | 김 | ❌ 복잡함 | O(N) |
| max() + remove() 사용 | 중간 | ✅ 비교적 직관적 | O(N) |
| sort() + sum() 활용 | 짧음 | ✅ 가장 간결함 | O(N log N) |
📌 리스트에서 특정 요소가 나머지 요소보다 큰지 확인하려면 sort() 또는 max()를 활용하는 것이 최적의 방법! 🚀
📌 이제 비효율적인 if 문을 줄이고 더 깔끔한 코드로 문제를 해결할 수 있음! 🎯🔥
'알고리즘, 코딩테스트' 카테고리의 다른 글
| 백준 10828번: 스택 (Python) (0) | 2025.02.18 |
|---|---|
| 백준 2839번: 설탕 배달 문제 해결 과정 (Python) (0) | 2025.02.14 |
| 백준 3009번: 네 번쨰 점, 파이썬 XOR연산 (0) | 2025.02.12 |
| 코딩 테스트에서 import 없이 해결할 수 있는 함수 대체 방법 정리 (0) | 2025.02.11 |
| 코딩테스트 시간 초과 방지 방법 (0) | 2025.02.11 |