본문 바로가기

BaekJoon/C++82

1259 : 팰린드롬수 (C++) 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 숫자 문자열이 들어오면 문자열의 갯수 / 2한 만큼 수행하며 맨앞과 뒤를 순서대로 비교하며 팰린드롬수가 맞으면 yes를 출력하고 중간에 맞지 않는 수가 하나라도 발생한다면 no를 출력한다. #include #include using namespace std; int main() { while(true) { string input; cin >> input; if(input[0] == '0') { break; } int result = 0; for(int i = 0; i < inp.. 2021. 1. 20.
2810 : 컵홀더 (C++) 2810번: 컵홀더 첫째 줄에 좌석의 수 N이 주어진다. (1 ≤ N ≤ 50) 둘째 줄에는 좌석의 정보가 주어진다. www.acmicpc.net 그리디 알고리즘을 사용하여 푸는 문제 주의할 점은 컵 홀더를 세는 것이 아닌 사람을 세야하는 문제. 좌석이 S만 나올 때는 자신의 왼쪽에 있는 컵홀더만 사용하다가 LL좌석이 나온 후 부터는 자신의 오른쪽에 있는 컵홀더만 사용할 수 있음과 동시에 이후 LL좌석이 나오는 때는 한 사람은 컵홀더를 사용할 수 없게 된다. 이에 맞춰 코딩을 하였다. #include #include using namespace std; int main() { int N; cin >> N; string seat; cin >> seat; int count = 0; int check = 0;.. 2021. 1. 19.
4796 : 캠핑 (C++) 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 그리디 알고리즘을 이용하여 푸는 문제로 총 휴가일 수에서 캠핑장을 이용하는 일수와 연속해서 이용하지 못하는 일의 수를 빼면서 계산하면 된다. 총 휴가일 수에서 캠핑장을 연속으로 이용하는 날의 수를 빼고 그 다음 이용하지 못하는 날을 뺀다. 그 다음 결과값에 캠핑장을 이용한 날을 더하고 총 휴가일의 수가 캠핑장을 이용할 수 있는 일자 보다 작아지면 while문을 나와 총 휴가일의 수가 음수면 더하지 않고 음수가 아니면 결과값에 남은 일의 수를 더한다. #in.. 2021. 1. 19.
10799 : 쇠막대기 (C++) 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net - 스택을 이용하여 푸는 문제이며 '()'가 들어오면 안에 스택안에 있던 사이즈를 측정하여 결과 값에 더하고 ')'가 입력되면 스택에서 pop을 하고 결과값에 1을 더한다. #include #include #include using namespace std; int main() { string stick; stack t; int result = 0; cin >> stick; for(int i = 0; i < stick.size(); i++) { if(stick[i] == '.. 2021. 1. 18.
2751 : 수 정렬하기 2 (C) 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net #include #define MAX_VALUE 2000002 int n, m; int a[MAX_VALUE]; int main() { scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d", &m); a[m + 1000001]++; } for(int i = 0; i < MAX_VALUE; i++) { if(a[i] != 0) { printf("%d\n", i - 1000001); } } return 0.. 2021. 1. 11.
2750 : 수 정렬하기 (C) 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net #include void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } int main() { int n, min, index; scanf("%d", &n); int a[n]; for(int i = 0; i < n; i++) { scanf("%d", &a[i]); } for(int i = 0; i < n; i++) { min = 1001; for(int j = i; j < n; j++) { if(.. 2021. 1. 11.
1874 : 스택 수열 (C) 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net #include #include #define MAX_SIZE 200001 char result[MAX_SIZE]; int indexd = 0; void push(int *stack, int data, int *topp) { stack[(*topp)++] = data; result[indexd++] = '+'; } void pop(int *stack, int *topp) { sta.. 2021. 1. 10.
11866 : 요세푸스 문제 (C) 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net - 1차 유대-로마 전쟁 당시 요세푸스(Flavius Josephus)는 동료 40명과 함께 로마군에게 포위됐다. 이들은 투항하는 대신, 제비를 뽑아 둥글게 둘러 앉은 후 두 명씩 건너 뛰고 세 번째마다 자살하기로 하였다. 이렇게 하여 39명이 죽은 뒤 요세푸스는 살아남은 동료 1명을 설득하여 투항했고, 훗날 역사가가 되어 이 일을 기록에 남겼다고 한다. (치사한거 아닌가? 지 혼자만 살아남네) 여튼, 큐를 이용하여 풀 수 있는 문제이다. 먼저 큐의 맨 앞에 있는 두명을 맨 뒤로 보내고 맨 앞을 한명 죽이고를 반복하면 되는 문제. 예) 7명의 사람.. 2021. 1. 10.
10845 : 큐 (C) 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net #include #include #define SIZE 10001 int queue[SIZE]; int front = -1, rear = -1; void push(int data) { queue[++rear] = data; } int pop() { if(front == rear) { return -1; } else { return queue[++front]; } } int size() { return rear - front; } int empty(.. 2021. 1. 10.