Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++

  1. 예제로 배우는 부트스트랩 컨테이너(3): .container와 .container-fluid 완벽 가이드

    컨테이너(Container)는 이름 그대로 무언가를 담거나 감싸는 역할을 하는 요소입니다. 부트스트랩에서 컨테이너는 뷰포트(viewport) 위에 콘텐츠를 담아 정렬하고 배치하는 기능을 합니다. 컨테이너는 뷰포트의 네 방향에 여백을 두어 콘텐츠에 패딩(padding)을 추가하며, 필요에 따라 이 값을 얼마든지 조정할 수 있습니다. 또한 컨테이너 안에 다른 컨테이너를 중첩(nested)시켜 사용할 수도 있습니다.그럼 지금부터 부트스트랩에서 제공하는 주요 컨테이너 클래스가 각각 어떤 특징을 가지고 있는지 하나씩 자세히 살펴보겠습니다..

  2. C++에서 주어진 둘레로 만들 수 있는 직사각형의 최대 면적 구하기

    직사각형의 둘레(perimeter)가 주어졌을 때, 그 둘레를 가지는 직사각형이 가질 수 있는 최대 면적을 구하는 것이 이번 글의 목표입니다.핵심 개념 정리직사각형은 마주 보는 두 변의 길이가 각각 같고 서로 평행한 평행사변형의 일종입니다.둘레(Perimeter)는 직사각형 네 변의 길이를 모두 더한 값으로, 직사각형 외곽선의 총 길이라고도 할 수 있습니다. 둘레를 구하는 공식은 다음과 같습니다.둘레 = 가로 + 세로 + 가로 + 세로 = 2 × (가로 + 세로)면적(Area)은 직사각형이 차지하는 크기를 의미하며, 다음 공식으로

  3. C++ 특수 행렬에서 x와 같은 항목 개수 세는 방법

    문제 설명정사각 행렬 mat[][]가 주어졌을 때, 행렬에 들어 있는 원소 중 값이 x와 같은 항목이 몇 개인지 세는 것이 이번 문제의 목표입니다. 여기서 말하는 특수 행렬은 원소가 mat[i][j] = i × j와 같은 규칙으로 구성된 행렬을 의미할 수 있지만, 아래에서 소개하는 방법은 어떤 형태의 행렬에도 동일하게 적용할 수 있습니다.행렬은 숫자나 원소를 행(row)과 열(column)의 형태로 배치해 표현하는 2차원 배열입니다.그럼 구체적인 예시를 통해 문제의 해결 방법을 하나씩 살펴보겠습니다.예시 1입력 −matrix[row

  4. C++에서 주어진 수로 나누어 떨어지는 n자리 숫자 개수 구하기

    문제 개요두 개의 값, 즉 자릿수(digit)와 기준이 되는 수(num)가 주어졌을 때, num으로 나누어 떨어지는 digit자리 숫자의 개수를 구하는 것이 목표입니다.쉽게 말해, 예를 들어 digit에 2가 입력되면 먼저 모든 두 자리 숫자(10~99)를 생각한 뒤, 그중 num으로 나누어 떨어지는 수의 개수를 세면 됩니다.구체적인 예시를 통해 문제를 더 자세히 이해해 보겠습니다.예시 입력 및 출력입력 − digit = 2, num = 12출력 − 주어진 수로 나누어 떨어지는 n자리 숫자의 개수: 8설명 − 12로 나누어 떨어지는

  5. C++로 숫자 N을 나누는 자릿수의 개수 구하기

    숫자 N이 주어졌을 때, 그 숫자를 구성하는 자릿수 중에서 N을 나눌 수 있는 자릿수의 개수를 구하는 것이 이번 문제의 목표입니다. 기억해야 할 핵심 사항 자릿수가 0인 경우에는 무시합니다. 즉, 0에 대해서는 카운트가 증가하지 않습니다. 동일한 자릿수가 여러 번 나타나고 그 자릿수가 숫자를 나눌 수 있다면, 카운트는 해당 자릿수가 나타난 횟수만큼 증가합니다. 예를 들어 숫자 2240이 주어지면, 0을 제외한 모든 자릿수가 2240을 나눌 수 있으며, 2가 두 번 나타나므로 자릿수 2에 대한 카운트는 2가 됩니다. 입력 − nu

  6. C++에서 특정 숫자를 포함하지 않는 n자리 수의 개수 구하기

    문제 정의 정수 digit(제외할 숫자)와 자릿수 n이 주어졌을 때, 그 숫자를 단 한 번도 포함하지 않는 n자리 자연수가 총 몇 개 존재하는지 계산하는 것이 이 글의 목표입니다. 입력 − n = 2, digit = 2 출력 − 72 설명 − 두 자리 수(10~99) 중 숫자 2가 들어 있지 않은 수는 10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34, … 등입니다. 십의 자리에 올 수 있는 숫자는 1~9 중 2를 제외한 8가지, 일의 자리는 0~9 중 2를 제외한 9가지이므로 총 8 ×

  7. C++에서 matrix(i, j) = i+j 조건의 n×n 행렬에서 k의 빈도 계산하기

    문제 개요정수 값으로 구성된 행렬이 주어졌을 때, 특정 정수 k가 행렬 안에서 몇 번 나타나는지 그 빈도(등장 횟수)를 계산하는 것이 이번 문제의 목표입니다. 행렬의 크기는 사용자가 지정할 수 있으며, 아래 프로그램에서는 4×4 크기를 기준으로 설명합니다. 행렬은 matrix(i, j) = i + j라는 규칙으로 생성되며, 인덱스는 0부터 시작하므로 첫 번째 원소는 matrix[0][0] = 0이 됩니다.입력 및 출력 예시입력 − int size = 4, k = 4출력 − 4×4 행렬에서 4의 등장 횟수는 3설명 −matrix[i]

  8. C++로 머리와 다리 개수만으로 동물원 속 동물 마릿수 계산하기

    동물원에 있는 전체 머리(동물) 수와 다리 수가 주어졌을 때, 이 데이터를 바탕으로 동물원에 있는 각 동물의 마릿수를 계산하는 문제입니다. 이 글의 예제에서는 사슴과 공작 두 종류의 동물이 있다고 가정합니다.문제 이해하기사슴은 다리가 4개, 공작은 다리가 2개입니다. 모든 동물은 머리를 하나씩 가지고 있으므로, 주어진 머리 수와 다리 수로 연립방정식을 세워 각 동물의 수를 구할 수 있습니다.예제 1입력 −heads = 60 legs = 200출력 −사슴의 수: 40 공작의 수: 20풀이 과정 −사슴의 총 마릿수를 x라고 하자. 공작

  9. C++ 정렬된 행렬에서 x보다 작거나 같은 요소 개수 구하기

    n × n 크기의 행렬과 정수 변수 x가 주어집니다. 행렬의 요소들은 이미 정렬된 상태로 배치되어 있으며, 우리의 목표는 x보다 작거나 같은 요소의 개수를 계산하는 것입니다. 예제 1 입력 − matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {6, 7, 8}}, X = 4 출력 − count is 4 설명 − 행렬의 각 요소를 값 x와 비교하면, 4보다 작거나 같은 요소는 1, 2, 3, 4로 총 4개입니다. 예제 2 입력 − matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {6, 7, 8

  10. C++로 모든 순열이 원래 수보다 크거나 같은 자연수 개수 구하기

    자연수 num이 하나 주어졌을 때, 이 문제는 num 이하의 자연수 중에서 자릿수를 어떤 방식으로 재배열(순열)하더라도 원래 수보다 항상 크거나 같아지는 수들의 개수를 계산하는 것입니다.문제 정의와 조건대상은 오직 자연수여야 합니다.해당 자연수의 모든 가능한 순열(자릿수 재배열 결과)이 주어진 수 자신보다 크거나 같아야 합니다.예시: num = 20일 때1부터 20까지의 모든 수를 검사합니다.한 자리 수 1, 2, 3, 4, 5, 6, 7, 8, 9는 자릿수가 하나뿐이므로 항상 조건을 만족합니다.두 자리 수 중 11, 12, 13,

  11. C++로 화학식의 원자 개수 계산하기

    문제 개요화학식(chemical formula)이 문자열로 주어졌을 때, 식에 포함된 각 원소의 개수를 구하는 프로그램을 작성해 보겠습니다.원소 기호는 항상 대문자로 시작하며, 그 뒤에 0개 이상의 소문자가 붙어 하나의 원소 이름을 이룹니다. 또한 해당 원소의 개수가 1보다 크다면 그 뒤에 1개 이상의 숫자가 따라올 수 있습니다. 반면 개수가 1인 경우에는 숫자를 생략합니다. 예를 들어 H2O나 H2O2는 모두 올바른 형태지만, H1O2처럼 개수 1을 명시하는 것은 허용되지 않습니다.예를 들어 입력이 Na2(CO)3이라면 출력은 C

  12. C++로 풀어보는 특수 이진 문자열(Special Binary String) 문제

    특수 이진 문자열이란?먼저 특수 이진 문자열(Special Binary String)의 정의를 살펴보겠습니다. 어떤 이진 문자열이 다음 두 가지 조건을 만족하면 특수 문자열이라고 합니다.문자열 내에 0과 1의 개수가 동일해야 합니다.문자열의 모든 접두사(prefix)에서 1의 개수가 0의 개수보다 크거나 같아야 합니다.문제 설명특수 문자열 S가 주어졌을 때, 하나의 이동(move)은 S에서 서로 인접한 두 개의 비어 있지 않은 특수 부분 문자열을 골라 서로 맞바꾸는 것을 의미합니다.우리의 목표는 이러한 이동을 임의의 횟수만큼 수행한

  13. C++ 유니온-파인드로 푸는 손 잡는 커플 문제 – 최소 교환 횟수 구하기

    문제 소개 N쌍의 커플이 일렬로 배치된 2N개의 좌석에 앉아 있고, 모든 커플이 서로 손을 잡을 수 있도록 나란히 앉으려고 합니다. 우리가 구해야 하는 값은 모든 커플을 옆자리에 앉히기 위해 필요한 최소 교환(swap) 횟수입니다. 사람과 좌석은 0부터 2N-1까지의 번호로 표현되며, 커플에게는 순서대로 번호가 부여됩니다. 첫 번째 커플은 (0, 1), 두 번째 커플은 (2, 3)처럼 짝지어지고, 마지막 커플은 (2N-2, 2N-1)이 됩니다. 커플의 초기 자리 배치는 배열 row로 주어집니다. 여기서 row[i]는 i번째 좌석에

  14. C++ 알고리즘: 정렬된 배열을 만들기 위한 최대 청크(파티션) 개수 구하기

    문제 이해하기정수 배열 arr가 주어졌을 때, 이 배열을 여러 개의 파티션(청크)으로 나누고 각 파티션을 개별적으로 정렬한 후 다시 이어 붙이면 하나의 정렬된 배열이 됩니다. 우리가 구해야 할 것은 바로 만들 수 있는 파티션의 최대 개수입니다.예를 들어 입력이 [3,2,4,5,5]라면 출력은 4입니다. [3,2], [4], [5], [5]와 같이 네 개의 파티션으로 나누면, 각각을 정렬한 뒤 이어 붙였을 때 [2,3,4,5,5]가 되어 전체 배열이 정렬 상태를 유지하기 때문입니다.해결 접근 방식이 문제의 핵심 아이디어는 배열을 나눌

  15. C++로 푸는 슬라이딩 퍼즐: BFS로 최소 이동 횟수 구하기

    문제 소개2x3 크기의 보드가 하나 주어져 있습니다. 보드 위에는 숫자 1부터 5까지 다섯 개의 타일이 놓여 있고, 나머지 한 칸은 빈 칸을 뜻하는 0으로 표시됩니다.여기서 말하는 한 번의 이동이란 0과 상하좌우로 인접한 숫자 하나를 서로 맞바꾸는 것을 의미합니다. 보드의 요소들이 [[1,2,3],[4,5,0]] 형태로 배치되면 퍼즐이 완성된 것입니다.퍼즐 보드가 주어졌을 때, 목표 상태까지 도달하는 데 필요한 최소 이동 횟수를 구해야 하며, 어떻게 움직여도 퍼즐을 풀 수 없다면 -1을 반환해야 합니다.예제예를 들어 입력이 [[1,

  16. C++로 풀어보는 벽돌 낙하(Bricks Falling When Hit) 문제

    0과 1로 이루어진 격자(grid)가 주어졌다고 가정해 보겠습니다. 셀의 값이 1이면 그 위치에 벽돌이 있다는 뜻입니다. 벽돌이 떨어지지 않고 유지되려면 다음 조건 중 하나를 만족해야 합니다.벽돌이 격자의 최상단 행에 직접 연결되어 있는 경우인접한(위, 아래, 왼쪽, 오른쪽) 벽돌 중 하나라도 떨어지지 않는 경우이제 우리는 순차적으로 지우기(erasure) 작업을 수행합니다. 각 단계에서 위치 (i, j)를 지정하면 해당 위치의 벽돌(존재할 경우)이 사라지고, 이로 인해 연결이 끊긴 다른 벽돌들이 떨어질 수 있습니다. 우리가 구해야

  17. C++ DFS로 해결하는 '가장 큰 섬 만들기' 알고리즘

    문제 소개 0과 1로 이루어진 2차원 이진 그리드가 주어집니다. 우리는 최대 하나의 0을 1로 변경할 수 있으며, 변경 후 만들 수 있는 가장 큰 섬의 크기를 구해야 합니다. 여기서 섬이란 상하좌우(4방향)로 연결된 1들의 그룹을 의미합니다. 예를 들어 입력이 [[1, 0], [0, 1]]이라면 출력은 3입니다. 하나의 0을 1로 바꾸면 두 개의 1이 서로 연결되어 넓이가 3인 섬을 얻을 수 있기 때문입니다. 해결 전략 이 문제는 깊이 우선 탐색(DFS)을 활용하면 효율적으로 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.

  18. C++에서 문자열의 모든 부분 문자열에 대한 고유 문자 수의 합 구하기

    countUniqueChars(s)라는 함수를 정의한다고 가정해 보겠습니다. 이 함수는 문자열 s에서 한 번만 등장하는 고유 문자의 개수를 반환합니다. 예를 들어 s = HELLOWORLD인 경우 H, E, W, R, D는 각각 한 번만 나타나므로 고유 문자에 해당하며, 따라서 countUniqueChars(s) = 5가 됩니다.이번 문제에서는 주어진 문자열 s에 대해, s의 모든 부분 문자열 t에 대한 countUniqueChars(t) 값의 총합을 구해야 합니다. 동일한 부분 문자열이 여러 번 나타나는 경우에는 중복된 횟수만큼

  19. C++로 경주에서 헤드 스타트(선행 거리) 구하는 프로그램

    문제 소개 이 문제에서는 100미터 경주에서 A가 B와 C에게 각각 허용해 주는 선행 거리(head start)를 나타내는 두 개의 정수가 입력으로 주어집니다. 우리가 작성해야 할 것은 C++로 B가 C에게 주게 되는 상대적인 선행 거리를 계산하는 프로그램입니다. 문제 설명 100미터 달리기를 떠올려 봅시다. A는 B에게 일정 거리를, 그리고 C에게 또 다른 거리를 각각 미리 내어줍니다. 다시 말해, A가 결승선(100m)에 도달하는 순간 B와 C가 각자 위치한 지점이 입력값으로 주어지는 셈입니다. 이 조건을 바탕으로 B가 C에게

  20. C++로 해결하는 직사각형 면적 합산 문제 (Rectangle Area II)

    축에 평행한(axis-aligned) 직사각형들의 목록이 주어졌다고 가정해 봅시다. 각 rectangle[i] = {x1, y1, x2, y2}에서 (x1, y1)은 i번째 직사각형의 왼쪽 아래 꼭짓점 좌표이고, (x2, y2)는 오른쪽 위 꼭짓점 좌표입니다.우리가 구해야 할 것은 평면 위에서 모든 직사각형이 차지하는 총 면적입니다. 답이 매우 커질 수 있으므로, 결과값을 10^9 + 7로 나눈 나머지를 반환하도록 합니다.예를 들어 입력이 아래와 같다면,출력은 6이 됩니다.문제 접근 방법이 문제는 스위프 라인(Sweep Line)

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:183/300  20-컴퓨터/Page Goto:1 177 178 179 180 181 182 183 184 185 186 187 188 189