프로그래밍/Baekjoon

    [C언어] 백준 1181. 단어 정렬

    문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 구상 20000 x 51 크기의 배열은 선언할 수 있나보다. 선언이 되지 않았다면 2차원 배열을 써서 상당히 복잡한 논리 과정을 거쳐야 하지만 다행히 간단하게 2차원 배열을 선언함으로서 문제를 해결할 수 있다. 입력받은 문자열을 qs..

    [C언어] 백준 1018. 체스판 다시 칠하기

    문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판을 색칠하는 경우는 두 가지뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나는 검은색인 경우이다. 보드가 체스판처럼 칠해져 있다는 보장이 없어서, 지민이는 8×8 크기의 체스판으로 잘라낸 후에 몇 개의 정사각형을 다시 칠해야겠다고 생각했다. 당연히 8..

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

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

    [C언어] 백준 2920. 음계

    문제 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다. 연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오. 입력 첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다. 출력 첫째 줄에 ascending, descending, mixed 중 하나를 출력한다. 구상 배열의 첫 번째 수가 1일..

    [C언어] 백준 1427. 소트인사이드

    문제 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 구상 수는 크지만 각 자리수를 따서 정렬하는 문제이므로 큰 배열이 필요하지 않다. 간단한 정렬이므로 '수 정렬하기3' 문제에서 썼던 카운팅 정렬을 응용하여 정렬한 방법을 사용했다. https://kiffblog.tistory.com/197 [C언어] 백준 10989. 수 정렬하기 3 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다...

    [C언어] 백준 10989. 수 정렬하기 3

    문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 구상 단계별로 풀어보기 - 정렬 단계로 들어가면 카운팅 정렬을 활용해보자고 한다. 카운팅 정렬을 통해 해결해보자. 카운팅 정렬(counting sort)는 계수 정렬이라고도 한다. 각 숫자의 개수를 세서 $1$을 $a$개, $2$를 $b$개, $3$을 $c$개... 순차적으로 저장하여 정렬하는 방식이다. 우선 수의 개수 $N$의 범위가 $1\leq N \leq 10,000..

    [C언어] 백준 2475. 검증수

    문제 컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다. 예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다. 입력 첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다. 출력 첫째 줄에 검증수를 출력한다. 구상 고유번호를 기록할 크기 6짜리 배열을 선언하고, 5번째 요소까지 넘버를 입력받은 다음 6번째 요소..

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

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