CodeUp 기초4-1(단순 반복문)
1251 ~ 1260
1251 : 1 부터 100까지 출력하기
반복문 연습용 예제입니다.
입력은 없습니다.
1부터 100까지 공백으로 띄워 하나씩 출력하세요.
for i in range(1, 101):
print(i, end=' ')
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
1252 : 1 부터 n 까지 출력하기
어떤 수 n을 입력으로 받아 1부터 n까지의 숫자를 출력하시오.
n = int(input())
for i in range(1, n+1):
print(i, end=' ')
5 1 2 3 4 5
1253 : a 부터 b까지 출력하기
어떤 두 수 a, b가 있을 때 두 수 사이의 모든 정수를 오름차순으로 출력하시오.
a, b = map(int, input().split())
if a > b:
a, b = b, a
else:
a, b = a, b
for i in range(a, b+1):
print(i, end=' ')
1 -1 -1 0 1
1254 : 알파벳 출력하기
시작 알파벳과 마지막 알파벳을 입력받아 그 두 알파벳 사이의 모든 알파벳을 출력하시오.
s, e = map(ord, input().split())
for a in range(s, e+1):
print(chr(a), end=' ')
d g d e f g
1255 : 두 실수 사이 출력하기
소수 둘째 자리의 두 실수 a와 b가 입력으로 주어진다.
a와 b사이의 수를 0.01간격으로 오름차순으로 출력하시오.
a, b = map(float, input().split())
while a <= b:
print("%.2f" % a, end=' ')
a += 0.01
2.00 2.03 2.00 2.01 2.02 2.03
1256 : 별 출력하기
별(*)을 n개 만큼 출력한다.
n = int(input())
for i in range(n):
print('*', end='')
5 *****
1257 : 두 수 사이의 홀수 출력하기
시작수와 마지막 수가 입력되면
시작수부터 마지막 수까지의 모든 홀수를 출력하시오.
a, b = map(int, input().split())
for i in range(a, b+1):
if i % 2 == 1:
print(i, end=' ')
2 7 3 5 7
1258 : 1부터 n까지 합 구하기
정수 n이 입력으로 들어오면 1부터 n까지의 합을 구하시오.
n = int(input())
# 가우스 덧셈
result = (1 + n) * (n // 2)
print(result if n % 2 == 0 else int(result + (1 + n) / 2))
20 210
1259 : 1부터 n까지 중 짝수의 합 구하기
1부터 n까지의 수 중 짝수의 합을 구하시오.
n = int(input()) // 2
print(n**2 + n)
5 6
1260 : 3의 배수의 합
어떤 수 a, b가 주어진다.
a와 b의 관계는 a <= b 이다.
a에서 b까지의 수 중 3의 배수만 더하여 출력하시오.
a, b = map(int, input().split())
result = 0
for i in range(a, b+1):
if i % 3 == 0:
result += i
print(result)
3 7 9
1261, 1265 ~ 1273
1261 : First Special Judge (Test)
10개의 수가 입력된다.
10개의 수 중 5의 배수를 하나만 출력한다.
만약 5의 배수가 없다면 0을 출력한다.
import random # 난수 생성
# 10개의 수 입력
n_list = list(map(int, input().split()))
# 입력받은 수 중 5의 배수인 수의 인덱스를 저장
index_5 = [i for i in range(10) if n_list[i] % 5 == 0]
# 만약 5의 배수가 없다면
if not index_5:
print(0)
# 5의 배수가 있다면
else:
print(n_list[random.choice(index_5)]) # 인덱스를 담은 배열 중 랜덤한 수를 골라 출력
1 2 3 4 5 6 7 8 9 10 5
1265 : 구구단 출력하기 1
고블린 파이터 동우는 구구단에 관심이 많다.
구구단의 원하는 단을 입력하면 그 단의 구구단이 출력되게 하시오.
dan = int(input())
for i in range(1, 10):
print("{}*{}={}".format(dan, i, dan*i))
3 3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
1266 : n개의 수의 합
수의 개수 n이 주어지고, 그 다음 줄에 무작위로 n개의 정수가 입력된다.
n개의 수의 합을 출력하시오.
n = int(input())
result = sum(list(map(int, input().split())))
print(result)
5 3 5 7 7 2 24
1267 : n개의 수 중 5의 배수의 합
수의 개수 n이 주어지고, 그 다음 줄에 무작위로 n개의 자연수가 입력된다.
그 n개의 수 중에서 5의 배수만 골라 합을 출력하시오.
n = int(input())
arr = list(map(int, input().split()))
result = 0
for e in arr:
if e % 5 == 0:
result += e
print(result)
5 3 5 7 15 2 20
1268 : n개의 수 중 짝수의 개수
수의 개수 n이 주어지고, 그 다음 줄에 무작위로 n개의 자연수가 입력된다.
그 n개의 수 중에서 짝수의 개수를 출력하시오.
n = int(input())
arr = list(map(int, input().split()))
count = 0
for e in arr:
if e % 2 == 0:
count += 1
print(count)
5 3 5 7 15 2 1
1269 : 수열의 값 구하기
영희는 수열에 대한 공부를 하고 있다.
하지만 영희는 수학을 잘 못해서 수열을 어려워하고 있어 프로그래밍으로 해결하려고 한다.
시작 값(a), 곱할 값(b), 더할 값(c), 몇 번째 항인지 나타내는 정수(n)이 입력으로 주어질 때, 수열의 n번째 항의 값을 구하시오.
a, b, c, n = map(int, input().split())
for i in range(n-1): # a 자체가 첫 번째 항이므로 n-1을 해준다.
a = a * b + c
print(a)
2 -1 3 5 2
1270 : 1의 개수는? 1
구글 입사 시험으로 1 ~ 1,000,000까지 1의 개수를 묻는 문제가 나온적이 있다.
우리는 이 문제를 풀기에는 아직 힘이 든다.
우리는 이 문제를 조금 쉽게 바꾸어 풀려고한다.
어떤 수 n이 주어지면 1부터 n까지의 수 중 맨 마지막 자리에 1이 몇 번 들어 있는지 알아내는 프로그램을 작성하시오.
n = int(input())
print((n - 1) // 10 + 1)
35 4
1271 : 최댓값 구하기
입력의 개수 n이 입력되고 n개의 데이터가 입력된다.
이 n개의 데이터 중 최댓값을 출력한다.
n = int(input())
n_max = max(list(map(int, input().split())))
print(n_max)
5 3 1 29 31 21 31
1272 : 기부
근제는 대기업 CSH의 회장이다.
최근 기업의 이미지가 좋지 않아 근제는 가난한 사람들에게 기부를 하려고 한다.
그런데 근제는 특이한 방법으로 기부를 했는데, 기부할 사람들을 번호 순으로 일정한 규칙에 따라 돈을 준다고 한다.
규칙은 다음과 같다
1, 10, 2, 20, 3, 30, 4, 40, 5, 50, 6, 60, 7, 70, 8, 80, 9, 90, 10, 100, 11, 110, 12, 120, …
한편, 가난한 존과 밥은 돈을 받기 위해 신청을 했다.
존의 번호(k), 밥의 번호(h)가 주어질때 존과 밥이 받는 기부금의 합을 구하시오.
h, k = map(int, input().split())
result = 0
for num in [h, k]:
if num % 2 == 0:
num = num // 2
result += num * 10
else:
num = num // 2 + 1
result += num
print(result)
1 2 11
1273 : 약수 구하기
자연수 N이 주어지면 N의 약수를 오름차순으로 모두 출력하시오.
import math
import heapq
n = int(input()) # n을 입력받음
sqrt_n = int(math.sqrt(n)) # n의 제곱근을 구함
h = [] # heapq 를 담을 공간
for i in range(1, sqrt_n+1): # 1부터 n의 제곱근까지
if n % i == 0: # n이 i의 약수면
if i == n//i: # i와 n//i이 같으면 = 중복 값이라면 ex)i=1 인 경우
heapq.heappush(h, i) # 한 번만 넣고
else: # i와 n//i이 같지 않다면, ex) n=6, i=2, n//i=3이므로 2와 3을 heap에 넣음
heapq.heappush(h, i) # i를 heap에 넣음
heapq.heappush(h, n//i) # n//i를 heap에 넣음
for i in range(len(h)): # heap의 개수만큼 반복하며
print(heapq.heappop(h), end=' ') # 오름차순으로 자동 정렬된 heap에서 원소 pop
6 1 2 3 6
1274 ~ 1287, 1294, 1295, 1675
1274 : 소수 판별
소수란, 약수가 1과 자기 자신 두 개 뿐인 수를 말한다.
어떤 수가 입력되면 그 수가 소수인지 판단하시오.
import math
n = int(input())
sqrt_n = int(math.sqrt(n))
count = 0
# 2부터 n의 제곱근까지 반복
for i in range(2, sqrt_n+1):
if n % i == 0:
count += 1
print("prime" if count == 0 else "not prime")
7 prime
1275 : k 제곱 구하기
어떤 수 n과 k가 있다.
n과 k의 관계는 다음과 같다.
nk
nk는 n을 k번 곱한 것을 말한다.
입력으로 n과 k가 주어지면 결과를 출력한다.
n, k = map(int, input().split())
print(n**k)
3 3 27
1276 : 팩토리얼 계산
팩토리얼(!)은 다음과 같이 정의된다.
n! = n * (n-1) * (n-2) * … * 2 * 1
즉, 5! = 5 * 4 * 3 * 2 * 1 = 120 이다.
n이 입력되면 n!의 값을 출력하시오.
n = int(input())
def factorial(n):
if n == 1:
return 1
return n * factorial(n-1)
print(factorial(n))
5 120
1277 : 몇 번째 데이터 출력하기
첫 줄에 데이터의 개수 N(N은 홀수)이 입력되고, 그 다음 줄에 N개의 데이터가 입력된다.
여기서 첫번째 데이터, 중간 데이터, 마지막 데이터를 출력하시오.
N = int(input())
arr = list(map(int, input().split()))
print(arr[0], arr[N//2], arr[-1])
7 2 4 7 3 1 2 5 2 3 5
1278 : 자릿수 계산
어떤 숫자가 입력되면 그 숫자가 몇 자릿수 숫자인지 알아내는 프로그램을 작성하시오.
n = int(input())
count = 1
while n // 10 != 0:
n = n // 10
count += 1
print(count)
932 3
1279 : 홀수는 더하고 짝수는 빼고 1
두 자연수 a, b 사이의 구간에 대해서
홀수는 더하고 짝수는 뺀다음의 합을 출력하시오.
a, b = map(int, input().split())
result = 0
for i in range(a, b+1):
if i % 2 == 0:
result -= i
else:
result += i
print(result)
5 10 -3
1280 : 홀수는 더하고 짝수는 빼고 2
두 자연수 a, b 사이의 구간에 대해서
홀수는 더하고 짝수는 빼는 식을 보여준 후 결과를 출력하시오.
단, 결과가 양수이면 +를 붙이지 않는다.
a, b = map(int, input().split())
result = 0
for i in range(a, b+1):
if i % 2 == 0:
result -= i
print('-{}'.format(i), end='')
else:
result += i
print('+{}'.format(i), end='')
print('={}'.format(result))
5 7 +5-6+7=6
1281 : 홀수는 더하고 짝수는 빼고 3
자연수 a, b 사이의 구간에 대해서 홀수는 더하고 짝수는 빼는 식을 보여준 후 결과를 출력하시오.
a, b = map(int, input().split())
result = 0
for i in range(a, b+1):
if i % 2 == 0:
result -= i
print('-{}'.format(i), end='')
else:
result += i
if i == a:
print('{}'.format(i), end='')
else:
print('+{}'.format(i), end='')
print('={}'.format(result))
5 7 5-6+7=6
1282 : 제곱수 만들기
n이 입력되면 k를 빼서 제곱수를 만들 수 있는 k를 구하고,
그 제곱수에 루트를 씌운 수(제곱근) t를 구하여라.
이 때 k는 여러가지가 될 수 있는데 가장 작은 k를 출력한다.
# Sol1
n = int(input())
for k in range(1, n):
t = (n-k)**(1/2)
if t % int(t) == 0:
print(k, int(t))
break
34 9 5
# Sol2
n = int(input())
for i in range(1, n): # 1부터 n까지 반복
if i*i <= n < (i+1)*(i+1): # i의 제곱 <= n < (i+1)의 제곱을 만족하는 i
print(n-i*i, i)
34 9 5
1283 : 주식 투자
gbs라는 개미 투자자가 주식에 투자하려고 합니다.
이 사람이 투자한 돈의 액수와, 그 주식의 하루간의 변동을 퍼센트로 알 때, 이 사람의 순수익과 이득/손해 판단을 출력하세요.
a = int(input())
b = int(input())
arr = list(map(int, input().split()))
money = a
for per in arr:
money += money * per/100
result = round(money - a)
print(result)
print("good") if result > 0 else (print("bad") if result < 0 else print("same"))
10000 4 10 -10 5 -5 -125 bad
1284 : 암호 해독
두 소수의 곱을 암호로 사용하는 알고리즘은 큰 수의 소인수분해가 어렵기 때문에 안전하다고 알려져있다.
그렇지만, 만약 두 소수를 잊어버리면 어떻게 될까? 굉장히 난감할 것이다.
이에 대비해 어떤 수(n)가 입력되면 두 소수의 곱으로 나타낼 수 있으면 두 소수를 오름차순으로 출력하고,
그렇지 않으면 “wrong number”를 출력하는 프로그램을 작성하시오.
# 소수끼리는 항상 서로소
N = int(input())
n = N
div_set = set()
d = 2
while N != 1:
if N % d != 0:
d += 1
else:
N //= d
div_set.add(d)
div_list = list(div_set)
if len(div_list)== 2 and (div_list[0] * div_list[1]) == n:
for i in sorted(div_list):
print(i, end=' ')
else:
print("wrong number")
1234565 5 246913
1285 : 계산기 2
계산기 1에서 두 피연산자에 대한 연산만 다루었다.
이번에는 식을 입력하면 차례대로 계산하여 출력하는 계산기를 만들어보자.
단, 우선순위는 따지지 않고 왼쪽에서 부터 차례대로 계산하고, 모든 계산은 정수형 계산으로 처리한다.
from collections import deque
# 수식 입력
f = input()
# 연산자의 인덱스를 담을 배열
index = [-1]
# 식에 등장하는 숫자를 담을 배열
number = deque([])
for c in range(len(f)): # 수식을 하나씩 반복하면서
if f[c] in ['+', '-', '*', '/', '=']: # 만약 연산자라면
index.append(c) # index의 추가
for i in range(len(index)-1):
number.append(int(f[index[i]+1:index[i+1]])) # 수식의 인덱스를 기준으로 숫자를 추출해서 배열에 넣음
# 실제 수식부터 마지막 수식의 인덱스를 거치며 연산
# 가장 왼쪽에 있는 수 2개를 추출하여 수식에 맞는 연산을 진행하고
# 가장 왼쪽에 삽입
for i in index[1:-1]:
if f[i] == '+':
number.appendleft(number.popleft() + number.popleft())
if f[i] == '-':
number.appendleft(number.popleft() - number.popleft())
if f[i] == '*':
number.appendleft(number.popleft() * number.popleft())
if f[i] == '/':
number.appendleft(number.popleft() // number.popleft())
print(number[0])
1+2+3-4*5/6= 1
1286 : 최댓값, 최솟값
5개의 정수들의 최댓값과 최솟값을 구하는 프로그램을 작성하라.
import heapq
h = []
result = []
for _ in range(5):
n = int(input())
heapq.heappush(h, n)
for _ in range(len(h)):
result.append(heapq.heappop(h))
print(result[-1])
print(result[0])
3 7 -4 -6 5 7 -6
1287 : 구구단을 *로 출력하기
구구단을 입력받아 *로 출력하라.
n = int(input())
for i in range(1, 10):
print('*' * i * n)
2 ** **** ****** ******** ********** ************ ************** **************** ******************
1675 : 시저의 암호 1
시저의 암호문이 입력되면 원문으로 복원하는 프로그램을 작성하시오.
c = input()
# 각 문자의 아스키코드값에서 a의 아스키코드값인 97과 암호의 이동값인 3을 더한 100을 뺀 후
# mod 26을 통해 a ~ c가 x ~ z를 표현할 수 있도록 함
# 연산 후 문자로 나타낼 때에는 다시 원래 아스키코드값으로 돌려놓기 위해 97을 더해줌
for s in c:
if s != ' ':
print(chr((ord(s) - 100) % 26 + 97), end='')
else:
print(' ', end='')
qhyhu wuxvw euxwxv never trust brutus
1294 : 시저의 암호 2
대현이는 씨저의 암호 방식을 이용하여 문장을 만들려고 한다.
never trust brutus 를 씨저의 암호로 바꾸면 qhyhu wuxvw euxwxv 이다.
그런데 집중력이 약한 대현이는 하나 하나 찾아서 암호로 바꾸는데 어려움을 겪고 있다.
우리가 대현이를 위해 평문을 씨저의 암호문으로 바꾸는 프로그램을 만들어주자.
c = input()
for s in c:
if s != ' ':
print(chr((ord(s) - 94) % 26 + 97), end='')
else:
print(' ', end='')
never trust brutus qhyhu wuxvw euxwxv
1295 : 알파벳 대소문자 변환
주어지는 문장의 대문자를 소문자로, 소문자를 대문자로 변경하는 프로그램을 작성하라.
sen = input()
for i in range(len(sen)):
if sen[i].isupper():
print(sen[i].lower(), end='')
else:
print(sen[i].upper(), end='')
CodeChallenge2014withMSP cODEcHALLENGE2014WITHmsp
댓글남기기