입력:
정수가 순서대로 입력된다.
-2147483648 ~ +2147483647, 단 개수는 알 수 없다.
출력:
입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0이 입력되면 종료한다.
(0은 출력하지 않는다.)
내 코드:
a = list(map(int, input().split()))
for x in a:
if x != 0:
print(i)
else:
break
또 다른 풀이:
x=list(map(int, input().split()))
max_idx=len(x)-1 # 리스트 x의 최대 인덱스
i=0
while True: # 조건이 충족되지 않는 한 무한반복
if x[i]==0:
break
else:
print(x[i])
i+=1
if i > max_idx: # i가 최대 인덱스보다 커질 경우 i를 초기값 0으로 되돌린다
i=0
Comment: 사실 위에 있는 코드는 틀렸다고 보는 게 맞습니다. 저도 처음엔 정확한 풀이라고 뜨길래 맞는 줄 알았는데, for문은 while문처럼 조건을 지정하지 않는 한 무한반복되지 않거든요. 문제에는 틀림없이 '무한 출력'이라고 쓰여 있기 때문에 이 답은 맞는 답이 아닙니다. for x in a: 라고 하면, a 리스트에 있는 모든 값들을 끝까지 출력한 후에는 자동적으로 코드 실행이 멈추거든요.
이 문제를 풀려면 결국 while문을 사용해야 합니다. 저는 리스트의 인덱스 값이 될 i에 초기 값으로 0을 주고 출력할 때마다 i가 1씩 증가되도록 했습니다. 여기서 따로 조건을 추가해 주지 않으면 i가 최대 인덱스를 초과해 Indexerror가 발생합니다. 이 에러를 피하기 위해서는 i가 최대 인덱스를 넘었을 경우 가장 초기값인 0으로 돌아가도록 if문을 넣어주면 됩니다.
'Algorithm > CodeUp' 카테고리의 다른 글
[CodeUp 기초 100제] 1074 : [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기1(풀이 성공) (0) | 2021.02.26 |
---|---|
[CodeUp 기초 100제] 1072 : [기초-반복실행구조] 정수 입력받아 계속 출력하기(풀이 성공) (0) | 2021.02.26 |
[CodeUp 기초 100제] 1070 : [기초-조건/선택실행구조] 월 입력받아 계절 출력하기(풀이 성공) (0) | 2021.02.25 |
[CodeUp 기초 100제] 1069 : [기초-조건/선택실행구조] 평가 입력받아 다르게 출력하기(풀이 성공) (0) | 2021.02.25 |
[CodeUp 기초 100제] 1068 : [기초-조건/선택실행구조] 정수 1개 입력받아 평가 출력하기(풀이 성공) (0) | 2021.02.25 |