풀이
import sys
N = int(sys.stdin.readline().strip())
# 좌, 우 살피면서 확인할 것이니까 좌, 우에 0추가
nums = [0]
for _ in range(N):
nums.append(int(sys.stdin.readline().strip()))
nums.append(0)
rst = []
# 숫자들의 좌, 우가 나보다 작거나 같으면 터뜨려야되는 지뢰임
for i in range(1, N+1):
if nums[i-1] <= nums[i] >= nums[i+1]:
rst.append(i)
print('\n'.join(map(str, rst)))
삽질 코드
import sys
N = int(sys.stdin.readline().strip())
nums = []
for _ in range(N):
nums.append(int(sys.stdin.readline().strip()))
nums_sort = sorted(nums)
rst = []
while True:
target_ori = nums_sort.pop()
target = target_ori
if target in nums:
tar_idx = nums.index(target)
else:
continue
nums[tar_idx] = 0
for i in range(tar_idx-1, -1, -1):
val_left = nums[i]
if val_left < target:
target = val_left
nums[i] = 0
else:
break
target = target_ori
for i in range(tar_idx+1, N):
val_right = nums[i]
if val_right < target:
target = val_right
nums[i] = 0
else:
break
rst.append(tar_idx+1)
if sum(nums) == 0:
break
rst.sort()
print('\n'.join(map(str, rst)))
- 그리디에 약한 편이라 생각대로 풀어봤는데 파이썬 시간초과나고 pypy로도 내가 실행시간 제일 늦음
- 근데 그럴만 했음 코드 작성하면서도 이거 아닌데.. 하긴 함, 그래서 다시 품
'백준' 카테고리의 다른 글
백준 17144 미세먼지 안녕! (파이썬) (0) | 2022.12.08 |
---|---|
백준 10773 제로 (파이썬, 자바) (0) | 2022.12.06 |
백준 2042 구간 합 구하기 (파이썬) (세그먼트) (0) | 2022.12.05 |
백준 11659 구간 합 구하기 4 (파이썬) (세그먼트) (0) | 2022.12.04 |
백준 11003 최솟값 찾기 (파이썬) (0) | 2022.12.03 |