본문 바로가기

프로그램815

Pytyon 332제] 파이썬 EXPRESS CHAPTER 6. 도전문제 (2) p296 출처 : 반크_설과 대보름 참고풀이]board= [[' ' for x in range (3)] for y in range(3)] bCount=[[0 for x in range (4)] for y in range(4)] Step=0 bRight=0 # 게임 보드를 그린다. def Board_Print():     for r in range(3):         print("  " + board[r][0] + "|  " + board[r][1] + "|  " + board[r][2])         if (r != 2):             print("---|---|---") #board의 합을 0으로 셋팅한다. def Board_Clear():     global bRight     for i in r.. 2025. 1. 30.
Pytyon 331제] 파이썬 EXPRESS CHAPTER 6. 도전문제 (1) p296 출처 : 반크_설과 대보름 참고풀이]board= [[' ' for x in range (3)] for y in range(3)] bCount=[[0 for x in range (4)] for y in range(4)] Step=0 bRight=0 while True:     # 게임 보드를 그린다.     for r in range(3):         print("  " + board[r][0] + "|  " + board[r][1] + "|  " + board[r][2])         if (r != 2):             print("---|---|---")     if Step>=9:         print("사용자와 컴퓨터가 비겼습니다")         break     Step+=1 .. 2025. 1. 30.
C언어 223제] 카마이클 수(Carmichael Numbers) 출처 : 반크_반크 20년 백서 문제]암호 알고리즘 중에는 큰 소수를 활용하는 것도 있다. 하지만 어떤 큰 수가 소수인지를 판단하는 것은 그리 쉽지 않다. 페르마 테스트와 같이 빠른 속도로 매우 정확하게 소수 여부를 판단할 수 있는 확률적 소수 테스트 방법이라는 것이 있다. 소수 여부를 판단해야 할 정수 n이 주어졌을 때 a는 2이상 n-1이하의 난수라고 하자. 그러면 다음과 같은 식이 성립하면 n은 소수일 가능성이 있다. a^n mod m = a 어떤 정수가 이러한 페르마 테스트를 여러 번 통과하면 그 정수는 소수일 가능성이 높다고 할 수 있다. 하지만 안 좋은 소식도 있다. 합성수(소수가 아닌 수) 중에는 그 수보다 작은 모든 정수에 대해 이 페르마 테스트를 통과하는 것도 있다. 이런 수를 카마이클 .. 2025. 1. 30.
C언어 222제] 빛, 더 많은 빛(Light, More Light) 출처 : 반크_반크 20년 백서문제]우리 학교에는 복도 불을 켜고 끄는 마부(Mabu)라는 사람이 있다. 전구마다 불을 켜고 끄는 스위치가 있다. 불이 꺼져 있을 때 스위치를 누르면 불이 켜지고 다시 스위치를 누르면 불이 꺼진다. 처음에는 모든 전구가 꺼져 있다. 마부라는 사람은 특이한 행동을 한다. 복도에 n개의 전구가 있으면 복도를 n번 왕복한다. i번째 갈 때 그는 i로 나누어 떨어지는 위치에 있는 스위치만 누른다. 처음 위치로 돌아올 때는 아무 스위치도 건드리지 않는다. i번째 왕복은 (이런 이상한 행동을 하면서) 복도를 한 번 갔다가 오는 것으로 정의된다. 마지막 전구의 최종 상태를 알아내자. 과연 그 전구는 켜져 있을 까 아니면 꺼져 있을까? 입력 복도에 있는 n번째 전구를 나타내는 2^32-.. 2025. 1. 29.
C언어 221제] 단계(Steps) 출처 : 반크_반크 20년 백서 문제]수직선 위에서 정수 x에서 정수 y로 이동하는 과정을 생각해보자. 각 단계의 길이는 음이 아니어야 하며 이전 단계의 길이보다 1이 작거나 같거나 1이 커야 한다. x에서 y로 가는 데 필요한 최소 단계의 수는 얼마인가? 첫번째와 마지막 단계의 길이는 모두 1이어야 한다. 입력 첫번째 줄에는 테스트 케이스의 개수인 n이 입력된다. 한 줄에 하나씩의 테스트 케이스가 입력되면 각 줄마다 두 개의 정수 x, y가 입력된다. 0출력 각 테스트 케이스에 대해 x에서 y로 이동할 수 있는 최소 단계 수를 한 줄에 하나씩 출력한다. 입력 예 3 45 48 45 49 45 50 출력 예 3 3 4 출처] Programming Challenges 알고리즘 트레이닝 북(한빛미디어) : .. 2025. 1. 29.
C언어 220제] 자기기술 수열(Self-describing Sequence) 출처 : 반크_반크 20년 백서 문제]솔로몬 골롱(Solomon Golomb)의 자기기술 수열은 각 k에 대해 k라는 숫자가 정확하게 f(k)번 등장하는 속성을 가지는 양의 정수로 구성된 유일한 비감소수열이다. 이 수열의 앞부분을 생각해보면 다음과 같은 식이라는 것을 알 수 있다.어떤 값 n이 주어졌을 때 f(n)의 값을 계산하는 프로그램을 만들어야 한다. 입력 여러 개의 테스트 케이스가 입력될 수 있다. 각 줄마다 하나씩의 정수 n이 입력되며, 정수 한 개가 하나의 테스트 케이스를 이룬다(1출력 각 테스트 케이스에 대해 한 줄에 하나씩 f(n) 값을 출력한다. 입력 예 100 9999 123456 1000000000 0 출력 예 21 356 1684 438744 출처] Programming Challe.. 2025. 1. 28.
C언어 219제] 다항식의 계수(Polynomial Coefficients) 출처 : 반크_반크 20년 백서 문제]이 문제에서는 다항식을 전개했을 때의 계수를 구해야 한다. P=(x1+x2+...+xk)^n 입력 여러 쌍의 줄이 입력된다. 각 쌍의 첫번째 줄에는 두 개의 정수 n과 k가 있으며, 그 두 정수는 스페이스로 구분된다. (0출력 입력된 각 줄의 쌍에 대해 다항식 (x1+x2+...+xk)^n을 전개했을 때 나오는 p=∑1X10^i 항의 개수를 나타내는 정수를 한 줄에 하나씩 출력한다. 입력 예 2 2 1 1 2 12 1 0 0 0 0 0 0 0 0 0 1 0 출력 예 2 2 출처] Programming Challenges 알고리즘 트레이닝 북(한빛미디어) : 문제38 다항식의 계수(Polynomial Coefficients) p158  참고풀이]#include  uns.. 2025. 1. 21.
C언어 218제] 곱하기 게임(A Multiplication Game) 출처 : 반크_반크 20년 백서 문제]스탠(Stan)과 올리(Ollie)가 정수 p에 2 이상 9 이하의 수 가운데 하나를 곱하는 곱하기 게임을 한다. 항상 가장 먼저 게임을 시작하는 것은 스탠으로, p=1에서 시작해서 곱하기를 한다. 그러면 올리는 그 수를 받아서 곱셈을 한 다음 다시 스탠한테 순서를 넘기고, 이런 과정이 반복된다. 게임을 시작하기 전에 무작위로 1보다 크고 4,294,967,295보다 작은 정수를 하나 뽑는데, 둘 중에서 n 이상인 p를 먼저 만들어내는 사람이 게임의 승자가 된다. 입력 각 줄마다 정수 n이 하나씩 주어진다. 출력 각 입력 줄에 대해 다음 중 하나를 줄력한다. Stan wins. Ollie wins. 이때 스택과 올리는 모두 완벽하게 게임을 한다고 가장하자. 입력 예 .. 2025. 1. 21.
C언어 217제] 1의 개수(Ones) 출처 : 반크_반크 20년 백서 문제]2나 5로 나눌 수 없는 0 이상 10,000 이하의 정수 n이 주어졌는데, n의 배수 중에는 10진수로 표기했을 때 모든 자리 숫자가 1인 것이 있다. 그러한 n의 배수 중에서 가장 작은 것은 몇 자리 수일까? 입력 한 줄에 하나씩의 정수가 들어있는 파일 출력 입력된 정수 a에 대해 p=aXb(b는 0보다 큰 정수)라고 할 때 p=∑1X10^i를 만족시키는 가장 작은 정수 x(x>0)를 한 줄에 하나씩 출력한다. 입력 예 3 7 9901 출력 예 3 6 12 출처] Programming Challenges 알고리즘 트레이닝 북(한빛미디어) : 문제 36 1의 개수(Ones) p156  참고풀이]#include  int main() {    int n, x, t, S.. 2025. 1. 21.
C언어 216제] 뒤집어서 더하기(Reverse and Add) 출처 : 반크_백제역사 유적지구와 이스탐블역사 유적지구 문제]일단 어떤 수를  방아서 그 수를 뒤집은 다음 뒤집어진 수를 원래의 수에 더하는 과정을 뒤집어서 더하기라고 부르자, 그 합이 회문(palindrome, 앞뒤 어느 쪽에서 읽어도 같은 말이 되는 어구. 예: eye, madam, 소주만병만주소)이 아니면 회문이 될 때가지 이 과정을 반복한다. 예를 들어 처음에 195에서 시작해서 다음과 같이 네 번 뒤집어서 더하기를 반복하면 9,339라는 회문이 만들어진다. 195 + 591 = 786 + 687 = 1473 + 3741 = 5214 + 4125 = 9339 대부분의 정수는 이 방법을 몇 단계만 반복하면 회문이 된다. 하지만 예외도 있다. 회문을 찾을 수 없는 것으로 밝혀진 첫번째 수는 196이다.. 2025. 1. 16.
C언어 215제] 자리 올림(Primary Arithmetic) 출처 : 반크_백제역사 유적지구와 이스탐블역사 유적지구 문제]초등학생들이 여러 자리 수의 덧셈을 배울 때는 한 번에 한 자리씩 오른쪽에서 왼쪽으로 계산하도록 배운다. 그런데 그 자리 숫자의 합이 10을 넘어갈 때 그 윗자리 숫자에 1을 더해주는 것을 배울 때 많은 학생들이 힘들어한다. 일련의 덧셈 문제가 주어졌을 때 자리를 올리는 횟수를 세어서 선생님들이 학생들을 가르치는 데 도움을 줄 수 있는 프로그램을 만들어야 한다. 입력 각 행에는 열 자리 미만의 부호가 없는 정수가 두 개씩 입력된다. 마지막 줄에는 '0 0'이 입력된다. 출력 마지막 줄을 제외한 각 줄에 대해 주어진 두 수를 더할 때 자리를 올려야 하는 횟수를 계산한 다음, 아래에 주어진 형식대로 결과를 출력한다. 입력 예 123 456 555 .. 2025. 1. 16.
C언어 214제] 셸 정렬(Shell Sort) 출처 : 반크_백제역사 유적지구와 이스탐블역사 유적지구 문제]여틀 왕(King Yertle)은 그의 거북이 왕관을 재배치해서 가장 계급이 높은 귀족과 가장 가까운 측근들을 더 위쪽으로 올리고 싶어한다. 쌓여있는 거북이들의 순서를 바꾸는 방법은 거북이 한 마리가 원래 자기 위치에서 빠져 나와서 맨 위로 올라가서 자리를 잡는 방법 밖에 없다. 거북이 스택의 원래 순서와 새로 만들어져야 할 스택의 순서가 주어졌을 때 최소한의 이동 횟수만으로 원래 스택을 새로운 스택으로 재배치할 수 있는 순서를 찾아야 한다. 입력 입력의 첫번째 줄에는 테스트 케이스의 개수를 나타내는 K라는 정수 하나만 들어있다. 각 테스트 케이스는 스택에 들어있는 거북이의 개수를 나타내는 n이라는 정수로 시작되며 그 밑으로 n개의 줄에 걸쳐서.. 2025. 1. 16.
반응형