문제풀이
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 8 (11, 12, 13)
11. [프로그램 8-32]를 반복문 형태로 수정하시오. #define _CRT_SECURE_NO_WARNINGS #include void palindrome(int n); int main() { int n; printf("양의 정수 n을 입력하면 거꾸로 출력하는 프로그램입니다. n은? "); scanf("%d", &n); palindrome(n); return 0; } // 양의 정수 n을 거꾸로 출력하는 재귀적 함수 void palindrome(int n) { // n의 끝자리 값 출력하기 printf("%d", n % 10); // n이 10단위 이상의 값이라면 재귀 호출로 나머지 자리를 출력하기 if (n >= 10) palindrome(n / 10); } #define _CRT_SECURE_NO..
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 8 (6,7,8,9,10)
6. [프로그램 8-23]의 find_min 함수는 배열의 최솟값만 반환하므로 최솟값이 배열의 어느 원소에 해당하는지는 알 수 없다. 배열 원소의 첨자를 반환하는 함수 index를 정의해 이 최솟값이 배열의 어느 원소에 해당하는지 나타내도록 [프로그램 8-23]을 수정하시오. [프로그램 8-23] #include #define SIZE 5 // 함수의 원형 선언 int find_min(int arr[]); void print_arr(int arr[]); // main 함수의 정의 int main() { int f[SIZE] = {3, 0, -30, -20, -1}; // 배열을 선언과 동시에 초기화하기 int min; // 최솟값 구하기 min = find_min(f); // 배열 내용 출력하기 prin..
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 8 (1,2,3,4,5)
1. 배열에 저장된 값 중 사용자가 입력한 값이 몇 개 들어 있는지 표시하려고 한다. 이 프로그램에서 밑줄 친 곳에는 무언가가 생략되어 있거나 에러가 난다. 잘못된 이유와 어떻게 수정해야 하는지 적으시오. #include #define N 30 void print_title(); void main() { int result[N] = { ... }; int count, i, target; scanf("%d", &target); print_title; count = frequency(result[N], target); return 0; } void print_title() { ... } int frequency(int arr[N], value) { ... } void main() : 함수 내에서 0을 반환하..
(C언어) 백준 2798. 블랙잭
문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장의 카드에 써져 있는 숫자가 주어졌을 때, ..
(c언어) 백준 10809. 알파벳 찾기
문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. 구상 char word[100] = { 0 }; 단어의 길이가 100을 넘지 않으니 크기가 100인 배열 word..
(C언어) 백준 2675. 문자열 반복
문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./:이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 각 테스트 케이스에 대해 P를 출력한다. 구상 문자열 S의 길이가 ..
(파이썬) 백준 1085. 직사각형에서 탈출
문제 한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다. 출력 첫째 줄에 문제의 정답을 출력한다. 구상 좌우로 이동할 때 최단 거리 a와 상하로 이동할 때 최단 거리 b를 구하고 이를 비교한다. $a = min(|x-w|,|x|)$ $b = min(|y-h|,|y|)$ $res = min(a,b)$ 코드 x, y, w, h = map(int, ..
(파이썬) 백준 2665. 부녀회장이 될테야
문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. 입력 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 ..