💻 문제 풀이 접근 방법
1) 앞뒤에 2개씩 가지는 새로운 리스트를 만들고
2) 리스트 정렬시키고
3) 리스트의 맨 뒤의 숫자가 같은경우(즉, 해당 빌딩이 최댓값인 경우)에 그보다 작은 값 중의 최대인 값(list[-2])을 빼면 남은 세대들은 조망권을 가진다.
🎈 정렬시키지 않고 최댓값, 최솟값을 바로 추출하는 풀이로 하면 더 빠릅니다!
저는 강의시간에 배운 버블 정렬을 활용하여 풀어보았습니다:)
for tc in range(1, 11):
num = input()
arr = list(map(int, input().split()))
houses = []
ans = 0
for i in range(2, len(arr)-2):
houses = []
houses = arr[i-2:i+3]
# 정렬시키는 반복문
for j in range(1, len(houses)):
for k in range(0, len(houses)-1):
if houses[k] > houses[k+1]:
houses[k+1], houses[k] = houses[k], houses[k+1]
# 해당하는 집이 가장 높을 때, 조망권을 가지는 세대 구하는 코드
if arr[i] == houses[-1]:
ans += arr[i] - houses[-2]
else:
continue
print(f'#{tc} {ans}')
- SWEA 1206 - [S/W 문제해결 기본] 1일차 - View
- 문제링크
- 문제의 저작권은 SW Expert Academy에 있습니다
'알고리즘 문제 풀기 > SWEA' 카테고리의 다른 글
SWEA 4861. 회문 - 파이썬 (0) | 2021.02.19 |
---|---|
SWEA 4836. 색칠하기 2차원 배열(파이썬) (0) | 2021.02.16 |
SWEA 4839. 이진탐색 알고리즘 - 파이썬 (0) | 2021.02.16 |
[SWEA 1948] 날짜 계산기 2가지 풀이 (0) | 2021.02.09 |
[SWEA 1936] 가위바위보 2가지 풀이 (0) | 2021.02.08 |