본문 바로가기

분류 전체보기162

float vs double c++ 부동소수점 문제 코딩 테스트 문제를 풀던 중 나누기 연산을 해야하는 문제가 있었다. 나누기 연산 후 소수점 아래 N자리 까지 반올림 연산을 해야하기 때문에 float를 사용하여 문제를 해결하고자 하였다. 하지만 예시를 모두 맞췄지만 문제를 해결할 수 없는 상황이 일어나 여러 고민과 주변인에게 조언을 구한 결과 실수의 자료형에 문제가 있다는 것을 알게 되었다. 먼저 float는 6자리까지 표현이 가능한 실수 자료형이다. 또한 double은 15자리까지 표현이 가능한 실수 자료형이다. 이러한 차이는 정수 부분이 긴 실수 인 경우 문제가 발생할 수 있다. 123456789.123을 두 자료형에 넣는 경우 float의 경우 123456792.000000이라는 값이 담아지고, double의 경우 123456789.123000이 .. 2023. 10. 12.
통계학 #2108 c++ 풀이 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 이 문제를 통해 float의 문제점을 알 수 있어서 좋았다. 우선 정답이다. #include #include #include #include using namespace std; vector v; vector f; int listP[4001]; int listM[4001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int .. 2023. 10. 12.
수 정렬하기3 #10989 c++ 풀이 #include #include #include #include #include #include #include using namespace std; int list1[10001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; int temp; for (int i = 0; i > temp; list1[temp]++; } for (int i = 0; i < 10001; ; i++) { for (int j = 0; j < list1[i]; j++) cout 2023. 10. 10.
소수 구하기 #1929 c++ 풀이 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 생각 : 1. 소수 구해서 그냥 검사하면 되겠구나 ! => 시간초과 2. bineary search의 조건을 잘 주면 되나? => 해결하지 못함 3. 모든 소수를 구하되, 배수를 지워볼까? => 정답 #include #include #include #include #include #include using namespace std; vector numbers; long long int primes[1000001]; bool ge.. 2023. 10. 10.