Baekjoon/수학
[1456] 거의 소수(C++)
문제 어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다. 두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다. 입력 첫째 줄에 왼쪽 범위 A와 오른쪽 범위 B가 공백 한 칸을 사이에 두고 주어진다. 출력 첫째 줄에 총 몇 개가 있는지 출력한다. 해결 방법 에라토스테네스의 채를 이용한 문제이다. 에라토스테네스의 채는 소수를 쉽게 찾는 방법인데, 채에다가 찌꺼기를 걸러내는 것처럼 소수를 찾아나가는 것이 아니라 소수가 아닌 애들을 걸러내는 방식이다. 이렇게 소수 여부를 저장했으면 각 소수의 2배수, 3배수.... 중에 A보다 크거나 같고 B보다 작거나 같은 수를 찾으면 된다. 이때 주의해야 할 부분이 있는데 while(num
[21919] 소수 최소 공배수(C++)
문제 행복이는 길이가 $N$인 수열 $A$에서 소수들을 골라 최소공배수를 구해보려고 한다. 행복이를 도와 이를 계산해주자. 입력 첫째 줄에 수열 $A$의 길이 $N$이 주어진다. $(1 \le N \le 10,000)$ 그 다음줄에는 수열 $A$의 원소 $A_{i}$가 공백으로 구분되어 주어진다. $(2 \le A_{i} \le 1,000,000)$ 답이 $2^{63}$ 미만인 입력만 주어진다. 출력 첫째 줄에 소수들의 최소공배수를 출력한다. 만약 소수가 없는 경우는 -1을 출력한다. 해결 방법 이 문제의 핵심은 1️⃣ 수열의 원소는 중복될 수 있음 2️⃣ 소수들의 최소공배수를 구하는 것 위와 같다. {2, 3, 3, 4, 5, 5, 8}과 같이 수열에 중복된 원소가 들어갈 수 있는데 우리가 찾고자 하는..
[4344] 평균은 넘겠지
https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 � www.acmicpc.net 🏖 내 코드(C) // [4344] 평균은 넘겠지 // https://www.acmicpc.net/problem/4344 #include int main(void) { int c, n; scanf("%d", &c); while(c) { // 학생 N명 점수, 점수 총합, 평균, 평균 이상인 학생들의 수 int score[1001], sum = 0, mean, cnt = 0; scanf("%d",..
[1546] 평균(C)
https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 🏖 내 코드(C) // [1546] 평균 // https://www.acmicpc.net/problem/1546 #include int main(void) { int n, tmp, m = 0; double sum = 0, score[1001]; scanf("%d", &n); // 원래 점수 for(int i = 0 ; i < n ; i++) { scanf("%lf", &score[i]); i..
[3052] 나머지
https://www.acmicpc.net/problem/3052 3052번: 나머지 문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서�� www.acmicpc.net 🏝 해결방법 1. 수를 입력받는 동시에 그 수를 42로 나눈 나머지를 num 벡터에 저장 2. 벡터를 오름차순으로 정렬( 헤더의 sort 함수 사용) 3. 벡터 전체를 앞에서부터 탐색하면서 다른 수가 나올 때마다 cnt 증가 4. cnt 출력 🏖 내 코드(C++) // [3052] 나머지 // https://www.acmicpc.net/problem/30..
[3053] 택시 기하학(C++)
https://www.acmicpc.net/problem/3053 3053번: 택시 기하학 문제 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1,T2) = |x1-x2| + | www.acmicpc.net 💡 내 코드(C++) //[3053] 택시 기하학 // https://www.acmicpc.net/problem/3053 // 택시 기하학 -> 원은 마름모 모양 -> 원의 넓이 = 2*r*r #include #include using namespace std; #define M_PI 3.14159265358979323846 int main(void) ..
[2775] 부녀회장이 될테야
https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1
[2908] 상수
https://www.acmicpc.net/problem/2908 2908번: 상수 문제 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다. 상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 www.acmicpc.net 💡 내 코드(C) Ver.1 /* 상수 */ #include int main(void) { int a[3], b[3], n = 1; int ..