no image
[C++] 회의실 배정
🍟문제 사이트: 백준문제 난이도: Silver I문제 번호: 1931 🚩 문제한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 🚩 입력첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시..
2024.07.24
[C++] 벡터, 스택, 큐, 덱
코딩 테스트에서 자주 사용되는 데이터 구조인 벡터, 스택, 큐, 덱에 대해서 알아보자. 1. 벡터- 동적 배열을 제공하는 구조이다. 배열과 유사하지만, 크기가 자동으로 조정된다.- 연속된 메모리 공간에 데이터를 저장하며, 인덱스를 통한 접근은 O(1)로 빠르다.- 요소의 삽입 및 삭제보다 조회를 더 많이 할 때나, 배열의 크기를 미리 알 수 없을 때 유용하게 사용된다.  2. 스택- 후입선출(LIFO, Last In First Out) 자료구조로, 가장 마지막에 삽입된 요소가 가장 먼저 나온다.- 스택의 상단에만 접근 가능하며, push(삽입), pop(삭제), top(상단 요소 조회) 연산을 제공한다.- 깊이 우선 탐색(DFS), 문법 분석, 역순 문자열 생성 등에 사용할 수 있다.  3. 큐- 선입선..
2024.07.19
no image
[C++] DNA 비밀번호
🍟문제 사이트: 백준문제 난이도: Silver II문제 번호: 12891 🚩 문제평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA”는 DNA 문자열이 아니지만 “ACCA”는 DNA 문자열이다. 이런 신비한 문자열에 완전히 매료된 민호는 임의의 DNA 문자열을 만들고 만들어진 DNA 문자열의 부분문자열을 비밀번호로 사용하기로 마음먹었다.하지만 민호는 이러한 방법에는 큰 문제가 있다는 것을 발견했다. 임의의 DNA 문자열의 부분문자열을 뽑았을 때 “AAAA”와 같이 보안에 취약한 비밀번호가 만들어 질 수 있기 때문이다. 그래서 민호는 부분문자열에서 ..
2024.07.12
no image
[C++] 구간 합 구하기5
🍟문제 사이트: 백준문제 난이도: Silver I문제 번호: 11660 🚩 문제N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자.1234234534564567여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다.표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오. 입력첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째..
2024.06.18
no image
[C++] 터렛
🍟문제 사이트: 백준문제 난이도: Silver III문제 번호: 1002 🚩 문제조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다.이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다.조규현의 좌표 (x1,y1)와 백승환의 좌표 (x2,y2)가 주어지고, 조규현이 계산한 류재명과의 거리 𝑟1과 백승환이 계산한 류재명과의 거리 𝑟2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오. 입력첫째 줄에 테스트 케이스의 개수 𝑇가 주어진다. 각 테스트 케이스는 다음과 같이 이루어져 있..
2024.06.11
[C++] 코딩테스트 시간초과를 방지하기 위한 구문들
1. sync_with_stdio(false)ios::sync_with_stdio(false); 기본적으로 C++의 표준 스트림(std::cin, std::cout)은 C의 표준 I/O 스트림(stdin, stdout)과 동기화되어 있다. 이 동기화는 C와 C++ 스타일의 I/O 작업을 혼합하여 사용하더라도 예상되는 출력 순서를 보장한다.ios::sync_with_stdio(false);를 설정하면 이 동기화를 비활성화하여 I/O 작업을 더 빠르게 만들어 준다. 이때 C와 C++ I/O 스트림 간의 조정을 유지하는 오버헤드가 제거되는데, 한 번 이 동기화를 비활성화하면, C와 C++ 스타일의 I/O를 혼합해서 사용해서는 안 되며, 이렇게 하면 예측할 수 없는 결과가 발생할 수 있다.특히 프로그램이 많은 ..
2024.06.11
no image
[C++] 숫자의 합
🍟문제 사이트: 백준문제 난이도: Bronze IV문제 번호: 11720 🚩 문제N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 입력으로 주어진 숫자 N개의 합을 출력한다. 예제 입력: 5 54321 예제 출력: 15 ⚙️ 코드#include #include using namespace std;int main(){ int N; cin >> N; string numbers; cin >> numbers; int sum = 0; // 범위 기반 for루프, 모든 원소 순회할 때 사용 for(char ..
2024.03.28
no image
[C++] 카드2
🍟 문제 사이트: 백준 문제 난이도: Silver IV 문제 번호: 2164 🚩 문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 남는 카드..
2024.03.27
no image
[C++] 괄호
🍟 문제 사이트: 백준 문제 난이도: Silver IV 문제 번호: 9012 🚩 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()..
2024.03.26