목록수학 (25)
알고리즘 모음(C++)
문제 링크입니다. https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net 반올림과 평균을 구하는 코드를 요구하는 문제입니다. 이 문제를 푸는 요점은 반올림을 하는 코드를 구할 수 있는지였습니다. 반올임을 하기 위해선, 일단 double형을 통해 소수점을 포함한 값을 저장합니다. 그 다음, 해당 값을 int형으로 변환시킨 값을 만들어줍니다. -> 해당 과정은 소수점을 없애줍니다. 두 값을 뺐을 때, 0.5이상이라면 +1을 해..
문제 링크입니다. https://www.acmicpc.net/problem/1225 1225번: 이상한 곱셈 첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는 음이 아닌 정수이다. 수가 0인 경우에는 0만 주어지며, 그 외의 경우 수는 0으로 시작하지 않는다. www.acmicpc.net 두 수가 주어졌을 때, 한자리씩 뽑아 곱한 뒤 더하는 과정을 전부 거친 후 합을 구하는 문제입니다. 문자열로 두 수를 받아 한자리씩 뽑아줍니다. 뽑은 두수를 곱하는 과정을 끝까지 반복해주면 됩니다. 자세한 것은 코드를 참고해주세요 #include #include #include #include #include #include #include #include using namespace ..
문제 링크입니다. https://www.acmicpc.net/problem/10824 10824번: 네 수 첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000) www.acmicpc.net 두 수를 합친 후, 합친 수들끼리의 합을 구하는 문제입니다. 문자열 2개 씩을 이어준 뒤, 이를 long long형의 변수에 넣어줍니다. 두 개의 변수를 더해주면 됩니다. 자세한 것은 코드를 참고해주세요 #include #include #include #include #include #include #include #define P pair #define F first #define S second #define INF 987654321 using namespace ..
문제 링크입니다. https://www.acmicpc.net/problem/1924 1924번: 2007년 첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. www.acmicpc.net 수학을 이용한 구현 문제입니다. 날짜를 입력받아 요일을 출력하는 문제입니다. 예를 들어, 3월 14일인 경우, 1월과 2월의 날짜 수와 14를 더해 총 일수를 구합니다, 총 일수를 7로 나눈 뒤, 나머지를 따라서 요일을 정해주면 됩니다. 0 -> 일요일 ~ 6-> 토요일로 정해주면 구할 수 있습니다. 자세한 것은 코드를 참고해주세요 #in..
문제 링크입니다. https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 구현 문제였습니다. 자세한 것은 코드를 참고해주세요. #include #include #include #include #include #include #include #define P pair #define F first #define S second #define INF 987654321 using namespace std; int N; int main(){ cin.tie(0); cout.tie(0); cin >> N; int cnt = 0, sum = 0; while(1){ if(N
문제 링크입니다. https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net python을 이용하면 굉장히 쉽게 풀 수 있겠지만, C or C++은 자료형에 수의 한계가 정해져 있습니다. 따라서 큰 수 계산을 위한 코드를 짜야했던 문제입니다. 접근 방법은 먼저, 두 수를 뒤집습니다. 1의 자리부터 계산하기 위함입니다. for문을 통해 1자리씩 넘어가면서 계산을 합니다. 한자리수의 합을 계산한 뒤, 이를 string을 사용한 정답에 계속 이어 붙여주는 방법입니다. 자세한 것은 코드를 참고해주세요 #define _CRT_SECURE_NO_WARNINGS #includ..
문제 링크입니다. https://www.acmicpc.net/problem/27110 27110번: 특식 배부 설날을 맞아 부대원들을 위해 특식으로 치킨을 주문했다. 후라이드 치킨, 간장치킨, 양념치킨을 각각 $N$마리씩 주문했고, $1$인당 치킨을 한 마리씩 배부하고자 한다. 최대한 많은 부대원에게 본 www.acmicpc.net 간단한 사칙연산 문제입니다. 주문한 치킨의 수가 주어졌을 때, 몇명이 자신이 원하는 치킨을 먹는지 구하는 문제입니다. N개의 치킨과 치킨을 원하는 인원의 값을 비교해, 작은 값을 가져오면 됩니다. 자세한 것은 코드를 참고해주새요 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #inclu..
문제 링크입니다. https://www.acmicpc.net/problem/14864 14864번: 줄서기 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 학생 수 N (1 ≤ N ≤ 100,000)과 순서쌍의 수 M (0 ≤ M ≤ 1,000,000)이 공백으로 분리되어 주어진다. 일렬로 서 있는 학생들을 순서대로 학생1, 학 www.acmicpc.net 순위를 정하는 규칙을 찾는 문제였습니다. 1 ~ N까지 순서대로 서있는 학생이 카드를 받습니다. 이때 자신이 서있는 곳보다 뒤에 있는 학생이 자신이 가지고 있는 카드의 수보다 작을 경우 해당 명단을 받습니다. 이를 통해 학생들이 가지고 있는 카드를 순서대로 알아내는 문제입니다. 예제 입력 1을 통해서 값을 확인하겠습니다. 2, 5번 학생이 1번 ..
문제 링크입니다. https://www.acmicpc.net/problem/25214 25214번: 크림 파스타 각 \(A_i\)가 추가된 직후의 문제의 답 \(N\)개를 공백으로 구분하여 출력한다. www.acmicpc.net 수를 기억하면 쉽게 풀 수 있었습니다. 자세한 것은 코드를 참고해주세요 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #define INF 987654321 #define P pair #define PP pair using namespace std; int N; int arr[200001]; pair dp[200001]; vo..
문제 링크입니다. https://www.acmicpc.net/problem/21312 21312번: 홀짝 칵테일 정진이는 특별한 음료를 가지고 있다. 음료들은 정수로 표현되는 고유 번호를 가지고 있다. 정진이는 이 음료들을 섞어 만든 칵테일을 만든다. 이 칵테일은 홀짝 칵테일이라 부르는데, 홀짝 칵 www.acmicpc.net 정렬 기준을 이용해 풀 수 있는 문제였습니다. 고유 번호 A, B, C를 이용해 칵테일을 만들때, 가장 맛있는 칵테일을 구하는 문제입니다.\ 만들 수 있는 칵테일의 수는 7개입니다. 이때 크다고 느끼는 칵테일을 확인하보겠습니다. 1. X가 홀수, Y가 짝수 -> X가 더 맛있음 2. X가 홀수, Y가 홀수 -> 두 수중 더 큰수가 맛있음 3. X가 짝수, Y가 홀수 -> Y가 더 ..
문제 링크입니다. https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 정렬을 사용한 문제입니다. 산술 평균값, 중앙값, 최빈값, 범위를 구하는 문제입니다. 중앙값, 범위의 경우에는 sort를 이용해 정렬을 한 뒤, 출력을 해주면 쉽게 할 수 있습니다. 산술 평균의 경우, 소수 첫번째 자리에서 반올림을 해야합니다. 따라서 캐스트 연산자를 사용해, 실수형 변수로 변환한 뒤, 출력해주면 됩니다. 최빈값의 경우는 조건이 있습니다. 1. 최빈 값이 여러개인 경우, 두번째..
문제 링크입니다. https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 수학적 규칙을 찾아 푸는 문제였습니다. 부터 까지 달력이 증가할 때, 는 몇 번째 해인지를 구하는 문제입니다. 먼저 달력이 어떻게 증가하는지 확인하겠습니다. 규칙을 찾기 위해서 카잉 달력을 끝까지 확인해보겠습니다. 로 이루어진 카잉 달력을 X값의 변화에 따라 나열해봤습니다. 이때 X 값이 같을 때 Y값 변화를 확인해보겠습니다. M = 10, N = 12 인 경우, X값이 5일때 Y값..