본문 바로가기

프로그램828

Python 335제] NCP Nextop Lv.1 나머지 출처 : 반크_설과 대보름 문제]출처 : 백준_3052번 참고]C언어 164제] 2006/2007 COCI 크로아티아 정보학 공개 경쟁 #1 나머지 참고풀이]import sys #수 10개를 입력받는다. L=[] for i in range(10):     a=int(input())     if 0        L.append(a)     else:         sys.exit() #42로 나눈 나머지값을 카운트하기 위하여 #나머지 값 리스트에 초기값 0을 셋팅한다. count=[0 for i in range(42)] #나머지 값을 구한다. for d in L:     count[d%42]+=1 #나머지의 종류를 구한다. kind=0 for d in count:     if d: kind+=1 #결과를 .. 2025. 3. 3.
Python 334제] NCP Nextop Lv.1 사칙연산 출처 : 반크_설과 대보름 문제]두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.  입력 두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000) 출력 첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다. 예제 입력 1  7 3 예제 출력 1  10 4 21 2 1 출처 : 백준_10869번 참고풀이]A,B=map(int,input().split()) if 1    print(A+B)     print(A-B)     print(A*B)     print(A//B)     print(A%B) 참고풀이 결과]     대한민국의 아름다운 영토, 독도의 봄 2025. 3. 3.
그리디 알고리즘(욕심쟁이 알고리즘, Greedy Algorithm) 그리디 알고리즘(욕심쟁이 알고리즘, Greedy Algorithm)이란 "매 선택에서 지금 이 순간 당장 최적인 답을 선택하여 적합한 결과를 도출하자"라는 모토를 가지는 알고리즘 설계 기법이다. 예를 들어 5개의 도시를 모두 한 번씩만 거쳐서 여행하고 싶은데 여행 도중 기름값을 아끼기 위해 가능하면 짧은 경로를 이용하고 싶다고 가정하자. 이 문제를 해결하기 위해 사용할 수 있는 전략은 몇 가지가 있다. 가능한 120가지의 경우의 수를 브루트 포스로 모두 살펴봐서 그중 가장 짧은 경로를 선택하는 것도 하나의 전략이 될 것이고, 외판원 순회 문제 문서에 나와있는 복잡한 전략을 쓸 수도 있고, "지금 내가 있는 도시에서 고를 수 있는 도로 중 가장 짧은 도로를 선택한다"라는 방법, 즉 그리디 알고리즘을 쓸 수.. 2025. 3. 1.
C언어 232제] 유리 구슬(Marbles) 출처 : 반크_반크 20년 백서 문제]나는 유리 구슬을 모으는데, 그 구슬들을 담아놓을 상자를 사려고 한다. 상자는 두 가지 유형으로 나눌 수 있다. 타입 1: 하나에 C1 달러며 정확하게 n1개의 구슬을 담을 수 있다. 타입 2: 하나에 C2 달러며 정확하게 n2개의 구슬을 담을 수 있다. 각 상자에는 정확하게 주어진 용량만큼의 구슬을 집어넣을 것이며, 총비용은 최소한으로 줄였으면 한다. 여러 상자에 구슬을 나눠 담는 가장 좋은 방법을 찾아보자. 입력 입력 파일에는 테스트 케이스가 여러 개 들어갈 수 있다. 각 테스트 케이스는 정수 n(1 이상 2,000,000,000 이하)이 들어있는 줄로 시작한다. 그 다음 줄에는 Ci과 ni이, 그 다음 줄에는 C2와 n2가 입력된다. 여기에서 C1, C2, n1.. 2025. 3. 1.
C언어 231제] 스미스 수(Smith Numbers) 출처 : 반크_반크 20년 백서 문제]1982년, 앨버트 윌란스키(Albert Wilansky)라는 수학자는 그가 가지고 있던 주소록을 흝어보다가 그의 처제인 H. 스미스(H. Smith)의 전화번호에 특이한 속성이 있다는 것을 발견했다. 그 수의 각 자리 숫자 합은 그 수의 소인수 각 자리 숫자의 합과 같았다. 잘 이해가 안 된다면 실제 숫자를 예로 들어서 생각해보자. 스미스의 전화번호는 493-7775였다. 이 수는 다음과 같이 소인수분해할 수 있다. 4937775 = 3*5*5*65837 전화번호의 각 자리 숫자의 합은 4+9+3+7+7+7+5=42이고, 소인수의 각 자리 숫자의 합은 3+5+5+6+5+8+3+7=42이므로 둘 다 42로 같은 값을 가진다. 윌란스키는 이런 유형의 수에 처제의 이름을.. 2025. 2. 27.
C언어 230제] 소수 네 개의 합(Summation of Four Primes) 출처 : 반크_반크 20년 백서 문제]워링(Waring)의 소수 가설은 모든 홀수는 소수 또는 소수 세 개의 합이라고 주장하는 가설이다. 골드바흐(Goldbach)의 가설은 모든 짝수는 소수 두 개의 합이라고 주장하는 가설이다. 이 두 문제는 200년이 넘게 해결되지 않고 있다. 이 문제와 관련하여 조금 간단한 문제를 풀어보자. 주어진 정수를 정확하게 소수 네 개의 합으로 표현하는 방법을 찾아내자. 입력 한 줄에 하나씩의 정수 n(N출력 각 입력 케이스 n에 대해 합해서 n이 되는 네 개의 소수를 출력한다. (한 줄에 한 케이스) 입력된 수가 소수 네 개의 합으로 표현될 수 없으면 "Impossible"이라고 출력한다. 답이 여러 가지 나올 수도 있는데, 그런 경우에는 아무 답이나 출력해도 된다. 입력 .. 2025. 2. 19.
C언어 229제] 2003년 크로아티아 올림피아드 경진대회 고등부 Seniors 1번 금메달, 은메달, 동메달은 누가? 출처 : 반크_반크 20년 백서 문제]2018년에 대한민국 평창에서 동계올림픽이 개최된다. 그 중에서도 스키는 동계올림픽의 꽃이지만 유독 우리나라에선 인기가 좀 없는 것 같다. 그래서 이번 평창올림픽에선 새로운 스키 경기 규칙이 적용 되었다. 새로 적용된 규칙은 다음과 같다. 스키 경기는 두 번의 경주로 이루어져 있다. 총 N명의 선수가 첫 번째 경주에 참가하고 각각 번호를 부여받는다. 1번 선수부터 N번 선수까지 순서대로 한 명씩 산을 타고 내려간다. 산을 다 내려오면 내려온 선수의 현재 순위가 정해질 것이다. 첫 번째 경주가 끝나고 난 뒤 최종적으로 정해진 순위에 따라서 1등부터 M등까지의 선수들에게만 두 번째 경주에 나갈 수 있는 자격이 주어진다.  두 번째 경주에서는 첫 번째 경주에서 늦게 들어온.. 2025. 2. 17.
C언어 228제] NCP Lv3 수 정렬하기 2 출처 : 반크_반크 20년 백서 문제]N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1  5 5 4 3 2 1예제 출력 1  1 2 3 4 5 출처 : 백준_2751번  참고풀이]#define _CRT_SECURE_NO_WARNINGS #include  int M[1000000]; int B[1000000]; void merge(int A[], int low, int mid, i.. 2025. 2. 17.
C언어 227제] 팩토리얼 나누기(Factovisors) 출처 : 반크_반크 20년 백서 문제]팩토리얼 함수 n!은 모든 음이 아닌 정수 n에 대해 다음과 같이 정의된다. 0! n!=nX(n-1)! (n>0) 다음과 같은 식을 만족하는 정수 k가 존재하면 b가 a로 나뉘어 떨어진다. (a divides b)고 한다. kXa=b 입력 입력은 여러 줄로 구성되며 각 줄에는 두 개의 음이 아닌 정수 n과 m이 입력된다. n과 m은 모두 2^31보다 작다. 출력 입력된 각 줄에 대해 n!이 m으로 나뉘어 떨어지는 지를 나타내는 문장을 출력한다. 문장의 형식은 아래에 나와 있는 형식대로 한다. 입력 예 6 9 6 27 20 10000 20 100000 1000 1009 출력 예 9 divides 6! 27 does not divide 6! 10000 divides 20.. 2025. 2. 6.
C언어 226제] 유크리드 문제(Euclid Problem) 출처 : 반크_반크 20년 백서 문제]유클리드가 밝혀낸 바에 따르면 임의의 정수 A, B에 대해 A와 B의 최대공약수를 D라고 할 때 AX+BY=D를 만족하는 정수 X와 Y가 존재한다. A와 B가 주어졌을 때 위 식으 만족시키는 X와 Y, 그리고 A와 B의 최대공약수 D를 구하라. 입력 한 줄에 두 개씩의 수가 입력되며 두 수는 각각 A와 B다. A와 B는 스페이스로 구분된다(A, B출력 입력된 각 줄에 대해 각각 스페이스로 구분된 세 개의 정수 X와  Y 그리고 D를 출력한다. 식을 만족하는 X와 Y가 여러 개 있으면, |X| + |Y|가 최소가 되는 값을 출력한다(X입력 예 4 6 17 17 출력 예 -1 1 2 0 1 17 출처] Programming Challenges 알고리즘 트레이닝 북(한빛미.. 2025. 2. 5.
C언어 225제] NCP Lv3. 날짜계산 출처 : 반크_반크 20년 백서 문제]준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타내는 수를 E, 태양을 나타내는 수를 S, 달을 나타내는 수를 M이라고 했을 때, 이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19) 우리가 알고있는 1년은 준규가 살고있는 나라에서는 1 1 1로 나타낼 수 있다. 1년이 지날 때마다, 세 수는 모두 1씩 증가한다. 만약, 어떤 수가 범위를 넘어가는 경우에는 1이 된다. 예를 들어, 15년은 15 15 15로 나타낼 수 있다. 하지만, 1년이 지나서 16년이 되면 16 16 16이.. 2025. 2. 3.
C언어 224제] 2006년 한국정보올림피아드 지역본선 초등부 3번/중등부 2번 빙고 출처 : 반크_반크 20년 백서 문제]빙고 게임은 다음과 같은 방식으로 이루어진다. 먼저 아래와 같이 25개의 칸으로 이루어진 빙고판에 1부터 25까지 자연수를 한 칸에 하나씩 쓴다. 다음은 사회자가 부르는 수를 차례로 지워나간다. 예를 들어 5, 10, 7이 불렸다면 이 세 수를 지운 뒤 빙고판의 모습은 다음과 같다. 차례로 수를 지워가다가 같은 가로줄, 세로줄 또는 대각선 위에 있는 5개의 모든 수가 지워지는 경우 그 줄에 선을 긋는다. 이러한 선이 세 개 이상 그어지는 순간 "빙고"라고 외치는데, 가장 먼저 외치는 사람이 게임의 승자가 된다. 철수는 친구들과 빙고 게임을 하고 있다. 철수가 빙고판에 쓴 수들과 사회자가 부르는 수의 순서가 주어질 때, 사회자가 몇 번째 수를 부른 후 철수가 "빙고"를.. 2025. 2. 3.
반응형