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문을 제공하지 않으므로 함수를 이용하여 풀도록 한다.
- 파이썬에서는 do~while()과 같은 반복문도 제공하지 않는다.
- 파이썬에서는 함수를 이용하여 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 :
- 아스키 코드를 이용하면 된다.
- ord() : 문자를 아스키 코드의 10진수로 변환 ex) 'a' >> 97
- chr() : 10진수의 아스키 코드를 문자로 변환 ex) 97 >> 'a'
- 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) 까지만 써도 된다.
'파이썬 코드업 기초 100제' 카테고리의 다른 글
파이썬 코드업 기초 14 - 1차원 배열 (0) | 2022.02.10 |
---|---|
파이썬 코드업 기초 13 - 종합 (0) | 2022.02.06 |
파이썬 코드업 기초 11 - 조건/선택실행구조 (0) | 2022.02.03 |
파이썬 코드업 기초 10 - 삼항연산 (0) | 2022.01.27 |
파이썬 코드업 기초 9 - 비트단위 논리연산 (0) | 2022.01.26 |