본문 바로가기

분류 전체보기

(77)
[C / C++] 백준 10845번 - 큐(Queue) 백준 10828번 : https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net ✅ 문제 설명 말 그대로 큐를 구현하는 문제이다. ⚡ 큐란? 간단하게 설명하자면 선입선출 구조! FIFO (First In First Out) 로, 식당에 가서 줄을 서면 먼저 줄을 선 사람부터 차례로 입장하듯이 가장 먼저 넣은 정보부터 차례로 꺼내는 구조이다. 예를 들어 a -> b -> c 순서대로 넣었다면, 뺄 때는 a -> b -> c 순서로 꺼내게 된..
[C / C++] 백준 10828번 - 스택(Stack) 백준 10828번 : https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net ✅ 문제 설명 말그대로 스택을 구현하는 문제이다. ⚡ 스택이란? 간단하게 설명하자면 입구와 출구가 같은 구조! LIFO (Last In First Out) 로, 접시를 쌓으면 맨 위에 놓인(맨 마지막에 놓은) 접시부터 빼는 것처럼 가장 나중에 넣은 정보를 먼저 꺼내는 구조이다. 예를 들어 a -> b -> c 순서대로 넣었다면, 뺄 때는 c -> b -> a..
[C / C++] 백준 10872번 - 팩토리얼 백준 10872번 : https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net ✅ 문제 설명 정수 N을 입력하면 N!을 출력하면 된다. ✅ 알고리즘 설명 1. 숫자 N을 입력한다. 2. N이 2가 될 때까지 1씩 빼주며 sum에 곱해준다. (1은 곱해도 똑같으니 생략) ex) N = 5, 5!은? sum = 5 ⏩ sum = 5 X 4 ⏩ sum = 5 X 4 X 3 ⏩ sum = 5 X 4 X 3 X 2 ⏩ sum = 120 ✅ 코드 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; int ma..
[C / C++] 백준 5086번 - 배수와 약수 백준 1316번 : https://www.acmicpc.net/problem/5086 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net ✅ 문제 설명 0 0을 입력(종료조건)하기 전까지, 숫자 두개를 입력하여 약수인지 배수인지 아무관계도 아닌지 판단하는 문제이다. [ 약수라면 factor, 배수라면 multiple, 아무관계도 아니라면 neither를 출력 ] ✅ 알고리즘 설명 1. 두 수 a,b를 입력한다. 2. a를 b로 나눈 나머지가 0이라면 a가 b의 약수 3. b를..
[C / C++] 백준 2884번 - 알람시계 ✅ 백준 2884번 - 알람시계 백준 1316번 : https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net ✅ 문제 설명 두 정수 H(시간), M(분)이 주어지면, 그 시간보다 45분 일찍 알람을 설정하면 된다. ✅ 알고리즘 설명 1. H, M을 입력받는다. 2. 만약 M이 45보다 작다면? : H에서 1시간을 빼고, M + 15분을 하여 출력 ex) H = 11, M = 44 11시 44분 – 45분 = (11 ..
[C / C++] 백준 2446번 - 별찍기_9 ✅ 백준2446번 - 모래시계 별 찍기 ✅ 문제 설명 숫자 N을 입력하면 첫째 줄 2 X N – 1부터 모래시계 모양으로 별을 찍으면 된다. ✅ 알고리즘 설명 1. 1 ~ N-1번줄까지 직각 삼각형 모양의 투명 삼각형 출력 2. 직각 역삼각형 모양의 별 삼각형 출력 (1번의 투명 삼각형 때문에 모래시계처럼 보임) 3. N ~ 2N-1번줄까지 직각 역삼각형 모양의 투명 삼각형 출력 4. 직각 삼각형 모양의 별 삼각형 출력 (3번의 투명 삼각형 때문에 모래시계처럼 보임) ✅ 코드 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; int main(void) { int n; scanf("%d", &n); int i, j; for (i = 0; i < ..
[C / C++] 백준 1316번 - 그룹 단어 체커 백준 1316번 : https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net ✅ 문제 설명 그룹단어란 단어에 존재하는 모든 문자에 대해서 각 문자가 연속해서 나타는 경우만을 말한다. ccazzzzbb는 c,a,z,b가 모두 연속적으로 나타나며, kin도 하나씩이지만 k,i,n이 모두 연속해서 나왔기 때문에 그룹단어로 볼 수 있다. 그러나 aaccbbc는 c가 떨어져서 나타났기 때문에 그룹단어가 아니다. ✅ 알고리즘 ..
[C / C++] 백준 1260번 - DFS 와 BFS 백준 1152번 : https://www.acmicpc.net/problem/1260 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net ✅ 문제 설명 이 문제는 DFS BFS를 다루는 문제로 정점의 개수 N, 간선의 개수 M, 탐색을 시작할 정점의 번호 V를 입력하고, 양방향 간선이라는 가정 하에 첫째줄에 DFS, 둘째줄에 BFS를 수행한 결과를 출력하는 문제이다. ✅ 알고리즘 설명 간단하게 생각하면, DFS(깊이우선탐색)는 스택, BFS(너비우선탐색)는 큐로 구현한다고 볼 수 있다. DFS는 정점 V를 ..