본문 바로가기
파이썬 코드업 기초 100제

파이썬 코드업 기초 12 - 반복실행구조

by chanfficial 2022. 2. 5.

71. 정수가 순서대로 입력된다. (단, 개수는 알 수 없다.) 0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자. while( ), for( ) 등의 반복문을 사용할 수 없다.

입력
정수가 순서대로 입력된다.

7 4 2 3 0 1 5 6 9 10 8

출력
입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0이 입력되면 종료한다. (0은 출력하지 않는다.)

7
4
2
3

Tip : 원래 이 문제는 goto문을 이용해 풀도록 유도한 것인데 파이썬에서는 goto문을 제공하지 않으므로 함수를 이용하여 풀도록 한다.

  1. 파이썬에서는 do~while()과 같은 반복문도 제공하지 않는다.
  2. 파이썬에서는 함수를 이용하여 goto문처럼 사용하면 된다

 

정답 : 

# define : 정의하다
# 파이썬에서 함수는 def(define)을 써서 정리한다.
# 재귀함수

def goto(array, i):
  if array[i] == 0:
    return
  print(array[i])
  i += 1
  goto(array, i)

array = list(map(int, input().split()))
goto(array, i = 0)

- 모르겠다...

 

 

72. n개의 정수가 순서대로 입력된다. (단 n의 최대 개수는 알 수 없다.) n개의 입력된 정수를 순서대로 출력해보자. while( ), for( ) 등의 반복문을 사용할 수 없다.

입력
첫 줄에 정수의 개수 n이 입력되고, 두 번째 줄에 n개의 정수가 공백을 두고 입력된다.

5  
1 2 3 4 5  

출력
n개의 정수를 한 개씩 줄을 바꿔 출력한다.

1  
2  
3  
4  
5 

Tip : 리스트의 메소드인 reverse()는 내부 원소들을 거꾸로 재정렬해준다.

 

정답 :

n = int(input())
number = list(map(int, input().split()))

#1
def goto(number, n, i):
  if i == n: return
  print( number[i] )
  i += 1
  goto(number, n, i)

goto(number, n, 0)

#2 reverse 사용
number.reverse()
def goto(number, n):
  print(number[n])
  n -= 1
  if n == -1: return
  goto(number, n)

goto(number, n-1)

 

 

73. 정수가 순서대로 입력된다. (단, 개수는 알 수 없다.) 0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.

입력
정수가 순서대로 입력된다.

7 4 2 3 0 1 5 6 9 10 8

출력
입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0이 입력되면 종료한다. (0은 출력하지 않는다.)

7
4
2
3

Tip : 반복문 for()를 사용한다.

 

정답 :

#1
number = map(int, input().split())

for element in number:
  if element is not 0:
    print(element)
    continue # continue를 만나면 아래의 구문은 실행하지 않고 다음 반복으로 넘어간다.
  break

- 여러 개의 정수를 변수 number에 저장한 다음 for 반복문과 if 조건문을 사용하여 0 이 아니면 그 정수를 출력하고 다음 반복으로 넘어가게 했고, 0 이면 반복문을 멈추도록 했다. 

 

74. 정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.

입력
정수 1개가 입력된다. (1 ~ 100)

5

출력
1씩 줄이면서 한 줄에 하나씩 1이 될 때까지 출력한다.

5
4
3
2
1

 

1) 정답

count = int(input())

for i in range(count, 0, -1):
  print( i )

- 입력한 정수 한 개를 변수 count에 저장한 다음 입력한 정수에서 1까지 -1만큼 줄어들며 반복하는 반복문을 사용하여 답을 출력하게 했다.

 

2) 내가 쓴 답 

n = int(input())

for i in range n:
	print(i)
    	n = n-1

- 파이썬에서는 반복문을 저렇게 사용할 수 있다는 것을 생각하지 못했다. 그래서 반복문 안에서 n이 0이 되기 전에 어떻게 반복문을 종료시켜야 하나 고민했다.

 

 

75. 정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.

입력
정수 1개가 입력된다. (1 ~ 100)

5

출력
1씩 줄이면서 한 줄에 하나씩 1이 될 때까지 출력한다.

4
3
2
1
0

 

정답 :

n = int(input())

for i in range(n-1, -1, -1):
	print(i)

 

 

76. 영문자(a ~ z) 1개가 입력되었을 때 그 문자까지의 알파벳을 순서대로 출력해보자.

입력
영문자 1개가 입력된다. (a ~ z)

f

출력
a부터 입력한 문자까지 순서대로 공백을 두고 출력한다.

a b c d e f

Tip :

  1. 아스키 코드를 이용하면 된다.
    • ord() : 문자를 아스키 코드의 10진수로 변환 ex) 'a' >> 97
    • chr() : 10진수의 아스키 코드를 문자로 변환 ex) 97 >> 'a'
  2. print() 함수의 두번째 파라미터인 end는 줄바꿈을 없애줄 수 있다. default값이 줄바꿈이다.

정답 :

converter = ord(input())

for i in range(97, converter+1):
  print( chr(i), end=' ' )

- 입력받은 문자를 10진수로 변환하여 변수 converter에 저장한 다음 a를 10진수로 변환한 수인 97부터 converter까지 반복하여 출력(chr()을 사용하여 다시 문자로 바꾸어 출력)하도록 했고, end=' ' 를 사용하여 모든 문자를 한 줄에 출력하게 했다.

 

77. 정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.

입력
정수 1개가 입력된다. (0 ~ 100)

4

출력
0부터 그 수까지 줄을 바꿔 한 개씩 출력한다.

0
1
2
3
4

 

1) 정답 :  while()

count = int(input())

i = 0
while count >= 0:
  print( i )
  i += 1
  count -= 1

- i 의 초기값을 0으로 설정하고 while 반복문을 사용하여 입력받은 정수 count가 0보다 클 때는, i 를 출력하고 i 값이 1씩 증가하며 count는 1씩 작아지는 것이 반복되도록 했다.

 

for()

count = int(input())

for i in range(0, count+1):
  print( i )

- for 반복문을 사용하여 0부터 입력한 정수인 count까지 반복하며 정수를 출력하도록 했다.

 

2) 내가 쓴 답

n = int(input())

for i in range(0, n+1, 1):
	print(i)

- 다른 규칙 없이 계속 증가하며 반복하는 식이기 때문에 range(0, n+1) 까지만 써도 된다.