배열

    [C언어] 백준 5597. 과제 안 내신 분..?

    문제 X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오. 입력 입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다. 출력 출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다. 구상 크기가 31인 배열을 선언하고, 배열의 인덱스 자체를 학생의 출석번호로 활용한다. 1번 학생은 1번 인덱스에, 25번 학생은 25번 인덱스에 저장한다. 0번..

    [C언어] 백준 25305. 커트라인

    문제 2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에 $N$명의 학생들이 응시했다. 이들 중 점수가 가장 높은 $k$명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라. 커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다. 입력 첫째 줄에는 응시자의 수 $N$과 상을 받는 사람의 수 $k$가 공백을 사이에 두고 주어진다. 둘째 줄에는 각 학생의 점수 $x$가 공백을 사이에 두고 주어진다. 출력 상을 받는 커트라인을 출력하라. 구상 C언어에서 제공하는 내장 정렬 함수를 활용해보겠다. C언어에 내장되어 있는 정렬 함수인 qsort()를 활용했다. qsort()는 stdlib.h 헤더파일에 있다. 기본형: void qsort( void ..

    [C언어] 백준 3003. 킹, 퀸, 룩, 비숍, 나이트, 폰

    문제 동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다. 체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다. 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다. 동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. 출력 첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. ..

    (C언어) 배열과 함수, 배열과 포인터

    일반적인 매개 변수 #include int square(int a); int main(void) { int p = 16; int res = square(p); return 0; } int square(int a) { return a * a; } 일반적인 매개 변수는 함수가 실행되면 기억 장소가 할당된다. 위 예에서도 square 함수가 실행되면 a에 실제로 기억 장소가 할당되고 p값은 16이 저장된다. 배열 매개 변수 변수를 함수로 전달하듯이 배열도 함수로 전달할 수 있다. 다만 동작 방식이 조금 다르다. #include int square(int a[]); int main(void) { int p[3] = { 1,2,3 }; square(p); return 0; } int square(int a[]) ..

    <C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 7(11, 12)

    11. 2*3 행렬 A와 3 * 4 행렬 B를 곱한 결과인 2 * 4 행렬 C를 구하여 다음과 같이 출력하시오. #include #define M 2 #define N 3 #define O 4 int main() { int a[M][N] = { {1,2,3}, {4,5,6} }; int b[N][O] = { {3,4,5,6}, {1,2,4,3}, {4,2,6,1} }; int c[M][O] = { 0 }; int i, j, k; for (i = 0; i < M; i++) { for (j = 0; j < O; j++) { for (k = 0; k < N; k++) { c[i][j] += a[i][k] * b[k][i]; } } } for (i = 0; i < M; i++) { printf("["); for..

    <C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 7(6, 7, 8, 9, 10)

    6. 5번의 프로그램에서 달의 일수가 30일인 달의 수를 다음과 같이 출력하시오. #include int main(void) { //첨자 번호가 월과 일치하도록 첫 요소는 0으로 초기화 int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int count = 0; printf("12달 중 30일까지 있는 달은"); for (int i = 0; i < 13; i++) { if (days[i] == 30) { printf(" %d,", i); count++; } } printf("\b "); printf("총 %d달입니다.", count); return 0; } 7. 행렬의 덧셈 결과를 다음과 같이 출력하도록 [프로그램 7-7]을 수정..

    <C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 7(1, 2, 3, 4, 5)

    1. 1차원 배열의 크기 즉 원소수가 10일 때 유효한 첨자의 범위를 적으시오. 0~9 2. 다음 문장 중 틀린 것을 고르시오. ① 다음과 같이 배열을 선언한 후 대입문으로 배열명에 배열 원소들을 한꺼번에 저장할 수 있다. int a[5] a = {1, 2, 3, 4, 5}; ② 배열의 여러 원소 중 한 개를 지정하기 위해 '배열명[2]'와 같이 [] 안에 명시하는 정수를 첨자라고 한다. ③ 1차원 배열 ary의 크기 즉 배열의 원소수가 10이라면 첫 원소는 ary[1], 마지막 원소는 ary[10]으로 참조한다. - 첫 원소는 ary[0], 마지막 원소는 ary[10]으로 참조한다. ④ int형 자료 10개, double형 자료 10개, char형 자료 10개 모두 30개의 자료를 하나의 배열에 저장할..