백준
백준 2232 지뢰 (파이썬)
MC류짱
2022. 12. 5. 22:53
풀이
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로도 내가 실행시간 제일 늦음
- 근데 그럴만 했음 코드 작성하면서도 이거 아닌데.. 하긴 함, 그래서 다시 품