728x90
반응형
JUNGOL 정보올림피아드&알고리즘에서 학습용으로 문제를 가져왔습니다. 문제가 될 시 수정, 삭제하겠습니다.
564 Accepted(20)
문제: 영문 대문자를 입력받다가 대문자 이외의 문자가 입력되면 입력을 중단하고
영문 대문자들에 대하여 1번 이상 입력된 각 문자와 그 문자의 개수를 사전 순으로 출력하는 프로그램을 작성하시오.
입력되는 문자의 개수는 2개 이상 100개 이하이다.
입력 예
A B C F F F B Z !
출력 예
A : 1
B : 2
C : 1
F : 3
Z : 1
code
a=list(map(str,input().split()))
b=[]
for i in a:
if i.isalpha()==True or i.isupper==True:
b.append(i)
c=[]
for j in b:
if j not in c:
c.append(j)
for k in c:
print("%s : %d"%(k,b.count(k)))
565
문제: 100 미만의 양의 정수들이 주어진다.
입력받다가 0 이 입력되면 마지막에 입력된 0 을 제외하고
그 때까지 입력된 정수의 십의 자리 숫자가 각각 몇 개인지
작은 수부터 출력하는 프로그램을 작성하시오. (0개인 숫자는 출력하지 않는다.)
입력 예
10 55 3 63 85 61 85 0
출력 예
0 : 1
1 : 1
5 : 1
6 : 2
8 : 2
code
a=list(map(int,input().split()))
b=[]
for i in a:
if i!=0 and i<10:
b.append(0)
elif i>=10 and i<100:
b.append(i//10)
elif i==0:
break
b.sort()
c=[]
for j in b:
if j not in c:
c.append(j)
for k in c:
print("%s : %d"%(k,b.count(k)))
566
문제: 100 이하의 자연수를 입력받아 첫 번째 항은 100으로 두 번째 항은 입력받은 수로 초기화하고 다음 항부터는 전전항에서 전항을 뺀 수로 채워나가는 수열을 작성하여 그 수가 음수가 나올 때까지 출력하는 프로그램을 작성하시오.
입력 예
62
출력 예
100 62 38 24 14 10 4 6 -2
code
a=int(input())
num=[]
num.insert(0,100)
num.insert(1,a)
i=2
while True:
num.append(num[i-2]-num[i-1])
if num[i]<0:
break
i+=1
print(*num)
567
문제: 3행 5열의 배열을 아래 출력 예와 같이 초기화 한 후 출력하는 프로그램을 작성하시오.
숫자사이의 공백은 3칸으로하고 각 숫자는 2칸으로 오른쪽에 맞추어 출력한다. 예, "%2d "
출력 예
5 8 10 6 4
11 20 1 13 2
7 9 14 22 3
code
print(''' 5 8 10 6 4
11 20 1 13 2
7 9 14 22 3''')
568
문제: 2행 4열의 배열 두 개를 만들어서 입력을 받고 두 배열의 곱을 구하여 출력하는 프로그램을 작성하시오.
입력 예
first array
1 2 3 4
5 6 7 8
second array
1 4 7 8
3 6 9 8
출력 예
1 8 21 32
15 36 63 64
code
print("first array")
a=list(map(int,input().split()))
b=list(map(int,input().split()))
print("second array")
c=list(map(int,input().split()))
d=list(map(int,input().split()))
fir_product = [x*y for x,y in zip(a,c)]
sec_product = [x*y for x,y in zip(b,d)]
print(*fir_product)
print(*sec_product)
569
문제: 5명 학생의 국어 영어 수학 과학 4과목의 점수를 입력 받아서 각 개인별로 평균이 80 이상이면“합격” 그렇지 않으면“불합격”을 출력하고 합격한 사람의 수를 출력하는 프로그램을 작성하시오.
입력 예
85 67 95 65
80 95 86 56
100 98 67 86
95 76 84 65
67 86 90 76
출력 예
fail
fail
pass
pass
fail
Successful : 2
code
count=0
for i in range(1,6):
a=list(map(int,input().split()))
if (sum(a)/4)>=80:
print("pass")
count+=1
else:
print("fail")
print("Successful : %d"%count)
570
문제: 배열을 만들어서 아래와 같이 저장한 후 출력하는 프로그램을 작성하시오. 규칙은 첫 번째 행은 모두 1로 초기화 하고 다음 행부터는 바로 위의 값과 바로 왼쪽의 값을 더한 것이다.
출력 예
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
code
a=[[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]]
for i in range(5):
for j in range(5):
a[0][j-1]=1
a[i][j]=a[i-1][j]+a[i][j-1]
print(a[i][j-1],end=" ")
print()
160
문제: 승지는 주사위 놀이를 하다가 주사위를 10번 던져서 각 숫자가 몇 번씩 나왔는지 알아보려고 한다. 한번 던질 때마다 나온 주사위의 숫자를 입력받아서 각 숫자가 몇 번씩 나왔는지 출력하는 프로그램을 작성하시오.
입력 예
5 6 3 4 5 5 2 2 4 6
출력 예
1 : 0
2 : 2
3 : 1
4 : 2
5 : 3
6 : 2
code
a=list(map(int,input().split()))
b=[1,2,3,4,5,6]
count_one=0
count_two=0
count_three=0
count_four=0
count_five=0
count_six=0
for i in a:
if i==1:
count_one+=1
elif i==2:
count_two+=1
elif i==3:
count_three+=1
elif i==4:
count_four+=1
elif i==5:
count_five+=1
elif i==6:
count_six+=1
print("%d : %d"%(1,count_one))
print("%d : %d"%(2,count_two))
print("%d : %d"%(3,count_three))
print("%d : %d"%(4,count_four))
print("%d : %d"%(5,count_five))
print("%d : %d"%(6,count_six))
161
문제: 학생들의 점수를 입력을 받다가 0이 입력되면 그 때까지 입력받은 점수를 10점 단위로 구분하여 점수대별 학생 수를 출력하는 프로그램을 작성하시오. (1명도 없는 점수는 출력하지 않는다.)학생은 최대 100명이하이다.
입력 예
63 80 95 100 46 64 88 0
출력 예
100 : 1 person
90 : 1 person
80 : 2 person
60 : 2 person
40 : 1 person
code
a=list(map(int,input().split()))
b=[]
for i in a:
if i==0:
break
else:
b.append(i//10)
b.sort(reverse=True)
c=[]
for j in b:
if j not in c:
c.append(j)
for k in c:
print("%d : %d person"%(k*10,b.count(k)))
162
문제: 10 미만의 자연수 두 개를 입력받아서 첫 번째 항과 두 번째 항을 입력받은 수로 초기화 시킨 후 세 번째 항부터는 전전항과 전항의 합을 구하여 그 합의 1의 자리로 채워서 차례로 10개를 출력하는 프로그램을 작성하시오.
입력 예
3 5
출력 예
3 5 8 3 1 4 5 9 4 3
code
a=list(map(int,input().split()))
b=[]
b.insert(0,a[0])
b.insert(1,a[1])
for i in range(0,10):
b.append(b[i]+b[i+1])
if b[i]>=10:
b[i]=b[i]%10
for j in range(0,10):
print("%d"%(b[j]),end=" ")
163
문제: 4행 3열의 배열을 선언하고 아래의 값으로 초기화 한 후 차례대로 출력한 후 배열의 모든 값을 더한 결과를 출력하는 프로그램을 작성하시오.
{{3, 5, 9}, {2, 11, 5}, {8, 30, 10}, {22, 5, 1}}
출력 예
3 5 9
2 11 5
8 30 10
22 5 1
111
code
a=[[3, 5, 9], [2, 11, 5], [8, 30, 10], [22, 5, 1]]
print(*a[0])
print(*a[1])
print(*a[2])
print(*a[3])
print(sum(a[0])+sum(a[1])+sum(a[2])+sum(a[3]))
164
문제: 호석이네 학교는 6학년이 네 반이 있는데 각 반의 대표를 세 명씩 선발하여 제기차기 시합을 하였다.
반별로 세 명이 제기를 찬 개수를 입력받아 각 반별로 제기를 찬 개수의 합계를 출력하는 프로그램을 작성하시오.
(반드시 배열을 이용하고 입력후에 출력하는 방식으로 하세요.)
입력 예
1class? 15 2 35
2class? 33 1 6
3class? 5 10 19
4class? 1 8 55
출력 예
1class : 52
2class : 40
3class : 34
4class : 64
code
a=list(map(int,input("1class? ").split()))
b=list(map(int,input("2class? ").split()))
c=list(map(int,input("3class? ").split()))
d=list(map(int,input("4class? ").split()))
print("1class : %d"%sum(a))
print("2class : %d"%sum(b))
print("3class : %d"%sum(c))
print("4class : %d"%sum(d))
165
문제: 예제를 보고 적당한 배열을 선언한 후 1행의 1열과 3열 5열을 각각 1로 초기화하고 나머지는 모두 0으로 초기화 한 후 2행부터는 바로 위행의 왼쪽과 오른쪽의 값을 더하여 채운 후 출력하는 프로그램을 작성하시오.
출력 예
1 0 1 0 1
0 2 0 2 0
2 0 4 0 2
0 6 0 6 0
6 0 12 0 6
code
a=[[1,0,1,0,1],[1,0,1,0,1],[1,0,1,0,1],[1,0,1,0,1],[1,0,1,0,1]]
for i in range(1,5):
for j in range(0,5):
if j==0:
a[i][j]=a[i-1][j+1]
elif j==4:
a[i][j]=a[i-1][j-1]
else:
a[i][j]=a[i-1][j-1]+a[i-1][j+1]
for i in range(5):
for j in range(5):
print("%d"%(a[i][j]),end=" ")
print()
166
문제: 2행 3열 배열을 두 개 선언하여 각각의 값을 입력 받은 후 두 배열의 같은 위치끼리 곱하여 새로운 배열에 저장한 후 출력하는 프로그램을 작성하시오.
입력 예
first array
3 6 9
8 5 2
second array
9 8 7
6 5 4
출력 예
27 48 63
48 25 8
code
print("first array")
a=list(map(int,input().split()))
b=list(map(int,input().split()))
print("second array")
c=list(map(int,input().split()))
d=list(map(int,input().split()))
fir_product = [x*y for x,y in zip(a,c)]
sec_product = [x*y for x,y in zip(b,d)]
print(*fir_product)
print(*sec_product)
167
문제: 4행 2열의 배열을 입력받아 가로평균과 세로평균 그리고 전체평균을 출력하는 프로그램을 작성하시오. (소수점 이하는 버림 한다.)
입력 예
16 27
39 100
19 88
61 20
출력 예
21 69 53 40
33 58
46
code
a=list(map(int,input().split()))
b=list(map(int,input().split()))
c=list(map(int,input().split()))
d=list(map(int,input().split()))
print("%d %d %d %d"%(sum(a)/2,sum(b)/2,sum(c)/2,sum(d)/2))
print("%d %d"%((a[0]+b[0]+c[0]+d[0])/4,(a[1]+b[1]+c[1]+d[1])/4))
print("%d"%((sum(a)+sum(b)+sum(c)+sum(d))/8))
168 Accepted(10)
문제: 행의 크기를 입력받아 파스칼 삼각형을 작성하여 마지막 행부터 첫 번째 행까지 차례로 출력하는 프로그램을 작성하시오. 행의 크기는 최대 10이다.
입력 예
6
출력 예
1 5 10 10 5 1
1 4 6 4 1
1 3 3 1
1 2 1
1 1
1
code
n=int(input())
a=[]
for i in range(n):
arr=[]
for j in range(i+1):
if j==0 or j==i:
arr.append(1)
print(1,end=' ')
else:
arr.append(a[i-1][j-1]+a[i-1][j])
print(a[i-1][j-1]+a[i-1][j],end=' ')
a.append(arr)
print()
169
문제: 3행 5열의 2차원 문자배열 형태의 대문자들을 입력 받은 후 소문자로 바꾸어서 공백으로 구분하여 출력하는 프로그램을 작성하시오.
입력 예
A B C D E
F G H I J
K L M N O
출력 예
a b c d e
f g h i j
k l m n o
code
a=list(map(str,input().split()))
b=list(map(str,input().split()))
c=list(map(str,input().split()))
d=[]
e=[]
f=[]
for i in a:
d.append(i.lower())
for j in b:
e.append(j.lower())
for k in c:
f.append(k.lower())
print(*d)
print(*e)
print(*f)
반응형
'Programming > JUNGOL : 정보올림피아드&알고리즘' 카테고리의 다른 글
[JUNGOL 함수2]:579~181 (0) | 2021.08.13 |
---|---|
[JUNGOL 함수1]:571~174 (0) | 2021.08.12 |
[JUNGOL 배열1]:555~159 (0) | 2021.08.10 |
[JUNGOL 반복제어문3]:549~149 (0) | 2021.08.09 |
[JUNGOL 반복제어문2]:541~139 (0) | 2021.08.07 |