본문 바로가기

프로그램/Python 1000제289

Python 25제] 2021년 한국정보올림피아드 1차 대회 1교시 중등부 사고력 문제 1. 다른 모자 쓰기 출처 : 반크 독도포스터 문제] N명의 사람이 있다. 이 사람들은 모두 서로 다른 모자를 쓰고 있는데, 이 모자를 벗어서 모아두었다가 다시 모자를 쓴다. 모자를 쓰는 방법의 수는 총 N! = N × (N − 1) × · · · × 1가지이다. 이 중, 어떤 사람도 자신이 처음 썼던 모자를 다시 쓰지 않는 방법의 수는 N = 2이면 1가지, N = 3이면 2 가지이다. N = 4이면 몇 가지가 있는가? 정답] 9 참고풀이] def Fac(n): if n==1: return 1 return n*Fac(n-1) def Count(X): result=0 for a in range(2,X+1): if a%2==0: result += int(Fac(X)/Fac(a)) else: result -= int(Fac(X).. 2021. 10. 22.
Python 24제] USACO 2020 DECEMBER CONTEST, BRONZE PROBLEM 1. DO YOU KNOW YOUR ABCS? 출처 : 반크 독도 포스터 문제] Farmer John's cows have been holding a daily online gathering on the "mooZ" video meeting platform. For fun, they have invented a simple number game to play during the meeting to keep themselves entertained. Elsie has three positive integers A, B, and C (A≤B≤C). These integers are supposed to be secret, so she will not directly reveal them to her sister Bessie. Instead, she gi.. 2021. 10. 7.
Python 23제] 깊이 우선 탐색을 활용한 막대자르기 출처 : 반크 독도 포스터 문제] 길이 8m의 막대를 3명이서 1m단위로 자를려고 할 때 몇 번이면 1m 막대가 될 수 있는지 프로그램을 작성하시오. (단, 하나의 막대는 한 사람만 자를 수 있다.) 8 -> 4, 4 로 자른다 1번 4, 4 -> 2, 2, 2, 2로 자른다 2번 2,2,2 -> 1,1,1,1,1,1로 자른다 3번 2 -> 1,1로 자른다 4번 그러므로 총 4번을 자르면 8m 막대가 1m막대로 만들수 있게 된다. 입력 예시1] 20, 3 출력 예시1] 8 입력 예시2] 100, 5 출력 예시2] 22 참고풀이] #x: 막대기 총수 #y: 막대기 자를 인원수 #n: 현재 자를 막대기 개수 def cutDef(x,y,n): if n>=x: #자를 막대기가 1m가 되면 작업을 끝낸다. ret.. 2021. 10. 5.
Python 22제] 파워 유저를 위한 파이썬 EXPRESS] p180 CHAPTER 4. 도전문제 문제] 1) p180 산수 문제 프로그램 참고하세요. 2) 덧셈 뿐만 아니라 뺄셈 문제도 출제할 수 있도록 프로그램을 수정하라. 3) 한 번이라도 맞으면 반복을 종료하도록 프로그램을 수정하라. 참고풀이] import random flag=True while flag: x=random.randint(1,100) y=random.randint(1,100) c=random.randint(1,2) if c==1: answer=int(input(f"{x} + {y} = ")) else: answer=int(input(f"{x} - {y} = ")) y*=-1 if answer==x+y: print("잘했어요!!") flag=False else: print("틀렸어요. 하지만 다음번에는 잘할 수 있죠?") 참고풀이.. 2021. 9. 24.
Python 21제] 파워 유저를 위한 파이썬 EXPRESS] p170 CHAPTER 4. 도전문제 문제] n-각형의 len길이 만큼 변의 길이를 입력받아 그리는 프로그램을 작성하시오. 참고풀이] import turtle t=turtle.Turtle() t.shape("turtle") #원하는 각형을 입력받는다. s=turtle.textinput("","몇 각형을 원하시나요?") n=int(s) lenStr=turtle.textinput("","한변의 길이를 입력하시오?") len=int(lenStr) t.penup() t.goto(-100,-100) t.pendown() for i in range(n): t.forward(len) t.left(360/n) turtle.mainloop() 참고풀이 결과] 대한민국의 아름다운 영토, 독도의 가을 2021. 9. 17.
Python 20제] 2020년도 한국정보올림피아드 1차 대회 초등부/고등부 2교시 문제1. 박 터뜨리기 출처 : 반크 카드뉴스 문제] K개의 팀이 박터트리기 게임을 한다. 각 팀은 하나의 바구니를 가지고 있고 바구니에 들어있는 공들을 던겨서 자기 팀의 박을 터드려야 한다. 우리는 게임을 준비하기 위해서, N개의 공들을 K개의 바구니에 나눠 담아야 한다. 이 때, 게임의 재미를 위해서 바구니에 담기는 공들의 개수를 모두 다르게 하고 싶다. 다시 말해서, N개의 공을 K개의 바구기에 빠짐없이 나누어 담는데, 각 바구니에는 1개 이상의 공이 있어야 하고, 바구니에 담긴 공들의 개수가 모두 달라야 한다. 더불어, 게임의 불공정함을 줄이기 위해서, 가장 많이 담기 바구니와 가장 적게 담긴 바구니의 공의 차이가 최소가 되도록 담을 것이다. 공들을 바구에 나눠 담기 위한 규칙들을 정리하면 다음과 같다. 1) N개의 공.. 2021. 9. 17.
Python 19제] 파워 유저를 위한 파이썬 EXPRESS] p169 CHAPTER 4. 도전문제 출처 : 대한민국 외교부 독도갤러리 문제] 팩토리얼을 꺼꾸로 계산해보자. n!= n x (n-1) x ... x 2 x 1 위의 프로그램을 어떻게 수정하여야 하는가? 참고풀이] n=int(input("정수를 입력하시오 : ")) f=1 print(n,"! = ",end='') for i in range(n,0,-1): if i>1: print(i,"* ",end="") else: print(i,"= ",end="") f *= i print(f) 참고풀이 결과] 대한민국의 아름다운 영토, 독도의 봄 2021. 9. 10.
Python 18제] 두 자연수 사이의 합을 구하는 프로그램을 작성하시오. 출처] 대한민국 외교부 독도 갤러리 : 독도의 사계 문제] 두자연수 n, m을 입력받아 작은수~큰수까지의 합을 구한다. 1. 두자연수를 작은수와 큰수로 구분하는 함수를 만든다. 2. 작은수~큰수까지의 합 구하는 함수를 만든다. 3. 결과를 출력한다. 제약조건] ▶ 1 2021. 8. 20.
Python 17제] 2021년 한국정보올림피아드 1차대회 초등부 2. 나누기 문제] N개의 정수 수열 A1, A2,..., AN이 주어진다. 수열을 각각이 연속된 네 부분으로 나누려고 한다. 단, 각 부분은 최소 하나의 수를 포함해야 한다. 또 각 부분의 합은 모두 같아야 한다. 즉 어떤 i, j, k(1≤i<j<k<N)에 대해서 [A1,...,Ai], [Ai+1,...,Aj], [Aj+1,...Ak], [Ak+1,...AN]으로 나눈다. 예를 들어 주어진 수열이 4, -1, 2, 1, -3, 1, 2, 2, 1, 3이라고 하자. 이 수열을 아래과 같이 나누면 각 부분의 합이 달라서 허용되는 형태가 아니다. [4, -1, 2], [1, -3, 1, 2], [2, 1], [3] 아래와 같이 나눈 경우 각 부분의 합이 모두 같다. [4, -1], [2, 1],[-3, 1, 2, 2,.. 2021. 8. 19.
Python 16제] 2021년 한국정보올림피아드 1차대회 초등부 1. 지우개 문제] N개의 칸에 1 부터 N 까지의 수들이 왼쪽부터 순서대로 저장되어 있다. 또, 각 칸은 왼쪽부터 1 부터 N 까지 순서대로 번호가 붙어 있다. 즉, 처음에는 각 칸의 번호와 각 칸에 저장된 수가 같다. 아래 그림은 N = 7일 때의 예이다. 다음 작업을 수가 정확히 하나가 남을 때 까지 반복한다. (A) 홀수번 칸의 수들을 모두 지운다 (B) 남은 수들을 왼쪽으로 모은다. 제일 첫 작업의 (A) 단계가 끝나면 칸들의 상태는 다음과 같을 것이다. (B) 단계가 끝나면 다음과 같을 것이다. 두번째 작업이 진행되면 칸들은 아래 두 그림과 같이 바뀔 것이다. 이제 수가 하나 남았으므로 작업은 더 이상 진행되지 않는다. N을 입력으로 받아 위와 같이 작업을 진행했을 때 마지막으로 남는 수를 계산하는 프로그.. 2021. 8. 11.
Python 15제] 게임어와 컴퓨터가 숫자게임을 하도록 프로그램을 작성하시오. 문제] 게임어와 컴퓨터가 카드게임을 하려고 한다. 게임의 규칙은 아래와 같다. 1. 카드를 받을 숫자를 입력하면 2. 컴퓨터는 입력한 숫자 만큼 무작위로 카드를 발생하여 그중 큰 수를 갖는다. 3. 게임어에게는 입력한 숫자 만큼의 카드를 무작위로 발생하여 보여준다. 4. 게임어는 그중 카드를 선택한다. 5. 컴퓨터와 게임어의 숫자를 비교하여 큰 수를 갖은 쪽이 이기는 게임이다. 6. 동점일 경우 다시 할 수 있도록 한다. 7. 카드는 1~5장까지 받을 수 있다. 8. 카드의 수는 1~9까지로 한다. 입출력예시 1] 카드 몇 장 받겠습니까? 2 게임어의 카드 입니다. 번호를 선택하여 주세요. [1(6), 2(8)] 선택번호 : 2 게임어 수 : 8 컴퓨터 수 : 8 승부를 내지 못하였습니다. 다시하도록 합.. 2021. 8. 9.
Python 14제] 조건에 맞는 리스트값을 출력하는 프로그램을 작성하시오. 문제] 비어있는 리스트에 0이 입력될 때까지 숫자를 무작위로 입력받아 추가한다. 그리고 인덱스와 기준 숫자를 입력하면, 인덱스가 리스트 범위를 벗어나면 "리스트의 범위를 벗어났습니다."를 출력하고 종료한다. 인덱스가 범위에 포함되면 리스트에서 0에서 입력받은 인덱스까지에 저장된 숫자들 중 기준 숫자보다 큰 숫자를 모두 출력하는 프로그램을 작성하시오. (단, 리스트에 저장되는 숫자는 2자리 자연수이고 중복될 수 있다.) [입력 예시1] 2 → 인덱스 11 → 기준 숫자 [출력 예시1] 무작위로 입력된 값] 11, 22, 33, 44, 55, 0 인덱스 0~2까지 중 기준숫자 11보다 큰 숫자] 33 [입력 예시2] -2 → 인덱스 5 → 기준 숫자 [출력 예시2] 무작위로 입력된 값] 99, 88, 88,.. 2021. 8. 5.
반응형