728x90
N, X = map(int, input().split())
data = list(map(int, input().split()))
for i, d in enumerate(data):
print(i, d)
if d > X:
del data[i]
print(data)
위와 같이 for 과 remove, del을 이용해서 item을 삭제 반복하는데, 삭제된 바로 다음 item들은 무시하고 지나가는 문제가 있었다.
문제는 단순하게 remove, del을 수행하게 되면 원본의 list의 item이 삭제 되기 때문에 그 시점의 list에서 반복이 실행되게 되므로, index가 맞지 않는 문제가 발생된다.
따라서, 위 같은 구문을 수행하려면 복사본 list를 만들고 그에 따라서 필요한 구문을 작성해야 한다.
N, X = map(int, input().split())
data = list(map(int, input().split()))
data_c = data.copy()
for i, d in enumerate(data_c):
if d > X:
data.remove(d)
print(data)
'코드연습 > Python' 카테고리의 다른 글
while 과 try, except를 적절하게 사용. (0) | 2022.04.01 |
---|---|
input() v.s. sys.stdin.readline() (0) | 2022.03.31 |
HackerRank | Day 8: Dictionaries and Maps (0) | 2021.12.29 |
HackerRank | Capitalize! (0) | 2021.12.19 |
HackerRank | Alphabet Rangoli (0) | 2021.12.19 |