Programming/JUNGOL : 정보올림피아드&알고리즘

[JUNGOL 배열2]:564~169

토토모에요 2021. 8. 11. 19:51
728x90
반응형

JUNGOL 정보올림피아드&알고리즘에서 학습용으로 문제를 가져왔습니다. 문제가 될 시 수정, 삭제하겠습니다.

http://www.jungol.co.kr/

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