[기초-반복실행구조] 0 입력될 때까지 무한 출력하기(설명)(py)
- 설명
임의의 정수가 줄을 바꿔 계속 입력된다.
-2147483648 ~ +2147483647, 단 개수는 알 수 없다.
0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.
- 입력
임의의 정수가 줄을 바꿔 계속 입력된다.
-2147483648 ~ +2147483647, 단 개수는 알 수 없다.
- 출력
입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0이 입력되면 종료한다.
(0은 출력하지 않는다.)
내 입력
while True :
n = int(input()) # n은 입력한 정수이다.
if n ==0 : # n
break
print (n)
모범 답안
while True:
a=input()
a=int(a)
if a==0:
break
else:
print(a)
[기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기2(py)
문제
정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.
입력
정수 1개가 입력된다.
(1 ~ 100)
출력
1만큼씩 줄이면서 카운트다운 수가 0이 될 때까지 한 줄에 1개씩 출력한다.
내 입력
n = int(input())
while True :
if n > 0 and n < 101:
print(n-1)
n = n-1
if n <= 0 : # n
break
문제
정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.
입력
정수 1개가 입력된다.
(0 ~ 100)
출력
0부터 그 수까지 줄을 바꿔 한 개씩 출력한다.
내 풀이
n = int(input())
i = 0
while i <= n:
print(i)
i += 1
for i in range(0, n+1):
i = i + 1
print(i)
문제
정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.
입력
정수 1개가 입력된다.
(0 ~ 100)
출력
1부터 그 수까지 짝수만 합해 출력한다.
내 풀이
n = int(input())
s=0
for i in range(1, n+1):
if i % 2 == 0:
s += i
print(s)
문제
영문 소문자 'q'가 입력될 때까지
입력한 문자를 계속 출력하는 프로그램을 작성해보자.
입력
문자들이 1개씩 계속해서 입력된다.
출력
영문 소문자 'q'가 입력될 때까지 입력한 문자를 계속 출력한다.
내 풀이
while True:
n = input()
print(n)
if n == 'q':
break
문제
1, 2, 3 ... 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지만
계속 더하는 프로그램을 작성해보자.
즉, 1부터 n까지 정수를 계속 더해 나간다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는 지를 알아보고자하는 문제이다.
입력
정수 1개가 입력된다.
ex)55
출력
1, 2, 3, 4, 5 ... 를 순서대로 계속 더해 합을 만들어가다가,
입력된 정수와 같거나 커졌을 때, 마지막에 더한 정수를 출력한다.
ex) 10
내풀이
n = int(input())
li = []
for i in range(1, n+1):
s =+ i
li.append(s)
if sum(li) >= n:
print(s)
break
문제
** 3 6 9 게임은?
여러 사람이 순서를 정한 후, 순서대로 수를 부르는 게임이다.
만약 3, 6, 9 가 들어간 수를 자신이 불러야 하는 상황이라면, 수를 부르는 대신 "박수(X)" 를 쳐야 한다.
33과 같이 3,6,9가 두 번 들어간 수 일때, "짝짝"과 같이 박수를 두 번 치는 형태도 있다.
입력
30 보다 작은 정수 1개가 입력된다.
(1 ~ 29)
출력
1 부터 그 수까지 순서대로 공백을 두고 수를 출력하는데,
3 또는 6 또는 9가 포함 되어있는 수인 경우, 그 수 대신 영문 대문자 X 를 출력한다.
내 풀이
n = int(input())
for i in range(1, n+1) :
if n > 0 and n < 30:
if not i % 10 == 3 and not i % 10 == 6 and not i % 10 == 9:
print (i, end = " ")
if i % 10==3 or i % 10 == 6 or i % 10 == 9:
print("X", end=' ') #출력 후 공백문자(빈칸, ' ')로 끝냄
문제
빨강(red), 초록(green), 파랑(blue) 빛을 섞어 여러 가지 다른 색 빛을 만들어 내려고 한다.
빨강(r), 초록(g), 파랑(b) 각 빛의 가짓수가 주어질 때,
주어진 rgb 빛들을 섞어 만들 수 있는 모든 경우의 조합(r g b)과 만들 수 있는 색의 가짓 수를 계산해보자.
**모니터, 스마트폰과 같은 디스플레이에서 각 픽셀의 색을 만들어내기 위해서 r, g, b 색을 조합할 수 있다.
**픽셀(pixel)은 그림(picture)을 구성하는 셀(cell)에서 이름이 만들어졌다.
입력
빨녹파(r, g, b) 각 빛의 가짓수가 공백을 두고 입력된다.
예를 들어, 3 3 3 은 빨녹파 빛에 대해서 각각 0~2까지 3가지 색이 있음을 의미한다.
0 <= r,g,b <= 127
출력
만들 수 있는 rgb 색의 정보를 오름차순(계단을 올라가는 순, 12345... abcde..., 가나다라마...)으로
줄을 바꿔 모두 출력하고, 마지막에 그 개수를 출력한다.
내 풀이
n, m, l = input().split()
n = int(n)
m = int(m)
l = int(l)
a = 0
for i in range(0, n) :
for j in range(0, m) :
for f in range(0, l) :
print(i, j, f)
a = a + 1
print(a)
제일 문제 이해하기 어려웠던 문제.. 색은 0~255가 있는데 RGB를 어떻게 2를 넣는다는지도 모르겠고 걍 입력값 출력값을 보니까 앞서 나온 경우의 수 구하기 문제와 같아서 풀었다.
뭔가 갈 수록 문제가 잘 풀린다. 가장 골치 아팠던 for와 while로 문제를 해결해 낼 때 쾌감이 있다 ㅎㅎ
문제
어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다.
예를 들어
1 4 7 10 13 16 19 22 25 ... 은
1부터 시작해 이전에 만든 수에 3을 더해 다음 수를 만든 수열이다.
이러한 것을 수학에서는 앞뒤 수들의 차이가 같다고 하여
등차(차이가 같다의 한문 말) 수열이라고 한다. (등차수열 : arithmetic progression/sequence)
수열을 알게 된 영일이는 갑자기 궁금해졌다.
"그럼.... 123번째 나오는 수는 뭘까?"
영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.
시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.
입력
시작 값(a), 등차의 값(d), 몇 번째 수 인지를 의미하는 정수(n)가
공백을 두고 입력된다.(모두 0 ~ 100)
출력
n번째 수를 출력한다.
내풀이
#시작 값(a), 등차의 값(d), 몇 번째 수 인지를 의미하는 정수(n)
a, d, n = input().split()
a, d, n = int(a), int(d), int(n)
c = 0
while True:
a += d #d씩 더해지는 등차수열
c = c + 1 #언제 끝낼지 정하기
if c == n-1: #c가 n-1 몇 번째 수인지 의미할때
print(a)
break # 멈춤
다른 풀이
#시작 값(a), 등차의 값(d), 몇 번째 수 인지를 의미하는 정수(n)
a, m, n = input().split()
a, m, n = int(a), int(m), int(n)
total=a
for i in range(0,n-1):
total=total+m
print(total)
문제 보 선생님은 오늘도 이상한 출석을 부른다.
영일이는 오늘도 다른 생각을 해보았다.
출석 번호를 다 부르지는 않은 것 같은데... 가장 빠른 번호가 뭐였지?
출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.
단,
첫 번째 번호와 마지막 번호가 몇 번인지는 아무도 모른다.
음수(-) 번호, 0번 번호도 있을 수 있다.
참고
리스트에 출석 번호를 기록해 두었다가, 그 중에서 가장 작은 값을 찾아내면 된다.
그런데, 가장 작은 값은 어떻게 어떤 것과 비교하고, 어떻게 찾아야 할까?
입력
번호를 부른 횟수(n, 1 ~ 10000)가 첫 줄에 입력된다.
n개의 랜덤 번호(k)가 두 번째 줄에 공백을 사이에 두고 순서대로 입력된다.
출력
출석을 부른 번호 중에 가장 빠른 번호를 출력한다.
내 풀이
#시작 값(a), 등차의 값(d), 몇 번째 수 인지를 의미하는 정수(n)
n = int(input()) #개수를 입력받아 n에 정수로 저장
a = input().split() #공백을 기준으로 잘라 a에 순서대로 저장
li = []
for i in range(n) : #0부터 n-1까지...
a[i] = int(a[i]) #a에 순서대로 저장되어있는 각 값을 정수로 변환해 다시 저장
li.append(a[i])
li = sorted(li)
print(li[0])