본문 바로가기

프로그램/Python 1000제341

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.
Python 13제] 7의배수와 3의 배수를 찾아 출력하는 프로그램을 작성하시오. 문제] 어느 도서관에서는 각 책마다 고유 코드를 부여한다. 코드의 형식은 (숫자 3개)-(숫자 3개) 이다. (예시> 000-000, 123-456) 앞의 숫자의 범위와 뒤의 숫자의 범위를 입력받아, 해당 범위에 포함되는 코드를 모두 출력하는데, 앞의 숫자가 7의 배수이고 뒤의 숫자가 3의 배수이면 "Found!"를 함께 출력한다. 1행과 2행은 코드 앞숫자의 처음과 끝이고 3행과 4행은 뒷숫자의 시작과 끝을 입력한다. 또한, 시작 숫자는 끝 숫자보다 큰 경우는 없다. [입력 예시 1] 7 8 11 13 [출력 예시 1] 007-011 007-012 Found! 007-013 008-011 008-012 008-013 [입력 예시 2] 123 125 211 212 [출력 예시 2] 123-211 123-.. 2021. 8. 4.
Python 12제] 2019년 한국정보올림피아드 1차대회 초등부 2번 - 회문 문제] [유형3] 2번 - 회문 (100점) 모든 언어에 대해 시간 제한 2초, 메모리 제한 512MB입니다. 회문(回文) 또는 팰린드룸(palindrome)은 앞 뒤 방향으로 볼 때 같은 순서의 문자로 구성된 문자열을 말한다. 예를 들어 'abba', 'kayak', 'reviver', 'madam'은 모두 회문이다. 만일 그 자체는 회문이 아니지만 한 문자를 삭제하여 회문으로 만들 수 있는 문자열이라면 우리는 이런 문자열을 "유사회문"(pseudo palindrome)이라고 부른다. 예를 들어 'summuus'는 5번째나 혹은 6번째 문자'u'를 제거하여 'summus'인 회문이 되므로 유사회문이다. 여러분은 제시된 문자열을 분석하여 그것이 그 자체로 회문인지, 또는 한 문자를 삭제하면 회문이 되는 .. 2021. 8. 3.
Python 11제] 입력한 배수의 개수와 합을 구하는 프로그램을 작성하시오. 문제] 임의의 자연수 값 N과 계산할 배수 M을 입력 받고 사용자 정의함수를 이용하여 1 ~ N까지 입력한 배수의 개수와 총합을 구하는 프로그램을 작성하라. [입력 예시 1] 임의의 정수와 배수를 입력하시오.(예 : 20 3) 20 13 배수의 범위는 2~10사이의 수를 입력하세요. 다시 입력하세요... 20 3 [출력 예시 1] 1~20까지 중 3의 배수의 개수는 6개입니다. 1~20까지 중 3의 배수의 합은 63입니다. [입력 예시 2] 임의의 정수와 배수를 입력하시오.(예 : 20 3) 45 3 [출력 예시 2] 1~45까지 중 3의 배수의 개수는 15개입니다. 1~45까지 중 3의 배수의 합은 360입니다. 참고풀이] #1~입력받은 정수까지 중 3의 배수 개수와 총합을 구한다. def Proces.. 2021. 8. 2.
Python 10제] 입력한 정수까지의 3의 배수의 개수와 합을 구하는 프로그램을 작성하시오. 문제] 자연수 변수 num을 입력 받고 for 문을 이용하여 3, 6, 9, … , num(1 ~ num까지 3의 배수의 개수와 총합)를 구하는 프로그램을 작성하라. [입력 예시 1] 20 [출력 예시 1] 1~20까지 중 3의 배수의 개수는 6개입니다. 1~20까지 중 3의 배수의 합은 63입니다. [입력 예시 2] 45 [출력 예시 2] 1~45까지 중 3의 배수의 개수는 15개입니다. 1~45까지 중 3의 배수의 합은 360입니다. 참고풀이] #임의의 정수를 입력받는다. N=int(input()) #1~입력받은 정수까지 중 3의 배수 개수와 총합을 구한다. Sum,cnt=0,0 for i in range(1,N+1): if i%3==0: cnt+=1 Sum+=i #결과값을 출력한다. print("1.. 2021. 8. 2.
Python 9제] 로또 당첨 등수를 구하는 프로그램을 작성하시오. 문제] 자동으로 무작위 자연수를 반복해서 입력 받아 로또번호코드를 생성하고자 한다. 4가 입력되면 로또번호코드에 추가하지 않고 무시하고, 7이 입력되면 로또번호코드 생성을 종료하고 최종 결과를 출력한다. 단, 로또 번호는 0~99의 자연수로 제한하며, 로또번호코드가 11의 배수이면 1등, 7의 배수이면 2등이다. [입력 예시 1] 1 2 1 7 [출력 예시 1] 선택된 번호 내역은 아래와 같습니다. [1, 2 , 1 , 7] 선택된 번호의 합은 11이고 11의 배수입니다. 축하합니다. 1등입니다. [입력 예시 2] 6 5 4 1 0 7 [출력 예시 2] 선택된 번호 내역은 아래와 같습니다. [6, 4, 1, 0, 7] 선택된 번호의 합은 14이고 7의 배수입니다. 축하합니다. 2등입니다. [입력 예시 3.. 2021. 8. 1.
Python 8제] 로또 당첨 등수를 구하는 프로그램을 작성하시오. 문제] 반복해서 자연수를 입력 받아 로또번호코드를 생성하고자 한다. 4가 입력되면 로또번호코드에 추가하지 않고 무시하고, 7이 입력되면 로또번호코드 생성을 종료하고 최종 결과를 출력한다. 단, 로또 번호의 자릿수에는 제한이 없으며, 로또번호코드가 11의 배수이면 1등, 7의 배수이면 2등이다. [입력 예시 1] 1 2 1 7 [출력 예시 1] 축하합니다. 1등입니다. [입력 예시 2] 6 4 1 0 7 [출력 예시 2] 축하합니다. 2등입니다. [입력 예시 3] 5 9 8 0 6 5 7 [출력 예시 3] 아쉽습니다. 다음 기회에... 참고풀이] #7이 입력될때까지 값을 더한다. Sum=0 while True: n=int(input()) if n==4: continue Sum+=n if n==7: brea.. 2021. 8. 1.
Python 7제] 2019년 한국정보올림피아드 1차대회 초등부 1번 - 막대기 문제] [유형3] 1번 - 막대기(100점) 모든 언어에 대해 시간 제한 1초, 메모리 제한 512MB입니다. 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 6, 9, 7, 6, 4, 6 이다. 일렬로 세워진 막대기를 오른쪽에서 보면 보이는 막대기가 있고 보이지 않는 막대기가 있다. 즉, 지금 보이는 막대기보다 뒤에 있고 높이가 높은 것이 보이게 된다. 예를 들어, 그림과 같은 경우엔 3개(6번, 3번, 2번)의 막대기가 보인다. N개의 막대기에 대한 높이 정보가 주어질 때, 오른쪽에서 보아서 몇 개가 보이는 지를 알아내는 프로그램을 작성하려고 한다. 입력형식 표.. 2021. 7. 12.
Python 6제] 컴퓨터와 게임어가 상자안에 있는 그림과 숫자를 하나씩 꺼내어 비교하여 결과를 출력하는 프로그램을 작성하시오. 문제] 컴퓨터와 게임어가 상자 안에 있는 그림과 숫자를 하나씩 꺼내어 비교하여 결과를 출력하는 프로그램을 작성하시오. 빨간색 하트가 그려진 공을 꺼내면 공의 숫자*2의 점수를 받는다. 빨간색 클로버가 그려진 공을 꺼내면 0점을 받는다. 초록색 하트가 그려진 공을 꺼내면 공의 숫자-1의 점수를 받는다. 초록색 클로버가 그려진 공을 꺼내면 공의 숫자+2의 점수를 받는다. 점수가 높으면 이기는 게임의 결과를 출력하시오. 게임어는 색깔을 입력할 수 있고 그림과 숫자는 임의의 값으로 받는다. 입력 예시1] 'RED', 'GREEN' 중 원하는 색을 입력하세요 : red 출력 예시1] Player : 0, Computer : 1 Player Lose, Computer Win 입력 예시2] 'RED', 'GREEN'.. 2021. 7. 1.
반응형