본문 바로가기

C++25

10816 C++ 숫자카드2 처음에 해당하는 값을 count 해주는 방식으로 풀이했는데 시간초과가 계속 떴다. 결국 upper_bound와 lower_bound를 이용해 해결했다. 1. N개의 숫자들을 sort로 오름차순으로 정렬시켜준다. 2. upper_bound - lower_bound를 통해 값을 찾는다. upper_bound : 찾으려는 원소보다 큰 숫자가 처음 나오는 위치 반환 lower_bound : 찾으려는 원소가 처음 나오는 위치 반환 (시간초과 문제)1. ios::sync_with_stdio(false); cin.tie(NULL); 추가 2. cout => printf #include #include #include using namespace std; int main() { ios::sync_with_stdio(f.. 2022. 8. 12.
11650 C++ 좌표 정렬하기/ pair pair을 통해서 두 개의 숫자를 쌍으로 저장할 수 있고, .first와 .second를 통해 각각 인자에 접근 할 수 있다. 이 pair들을 벡터로 저장할 수가 있어서 선언 : vector vec; 자료 값 입력 : vec.push_back(pair (값1, 값2)); 그리고 vector를 정렬해주는 sort함수를 이용해 값을 비교할 수 있는데, pair의 경우 자동으로 첫번째 인자를 비교해주고, 값이 같다면 두번째 인자를 비교해준다. 따라서 그냥 sort에 벡터를 넣고 돌리면 자동으로 문제에서 요구하는 오름차순으로 정렬해준다. (직접 bool형 함수 compare를 사용해 줄 수도 있다. 문제에서 더 복잡한 정렬이 요구되는 경우를 대비해서. 아래 코드에는 주석처리 해놓은 부분이다.) 시간초과 cout.. 2022. 8. 5.
2751 수 정렬하기 C++ 문제 풀이 자체는 sort를 이용해서 풀면 되는 간단한 알고리즘이지만, 시간초과가 관건인 문제였다. 찾아보니 cout이 시간을 많이 잡아먹는다고 하더라(printf 의 2~3배의 시간) cout을 printf와 \n로 바꾸니 시간초과문제가 해결됐다. #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); int N; cin >> N; vector vec; for (int i = 0; i > num; vec.push_back(num); } sort(vec.begin(), vec.end()); for (int i = 0; i < N; i++) { printf.. 2022. 7. 29.
C++ 7568 덩치 arr[50][2]라는 배열을 만들어 몸무게, 키를 담는다. rank[50]이라는 덩치 순서 배열을 만들고, 기본을 1로 설정한다. 자신보다 덩치가 큰 사람이 K명이라면 K+1등이라고 설정하는 것이 핵심이다. 참고로, if문에서 &&가 아닌 ||를 사용한다면 중복되는 순서가 있을 경우 문제가 생긴다. (ex. 1, 2, 2, 2,5가 답이 나오는 경우 1,4,4,4,5가 출력됨) #include using namespace std; int main() { int N; cin >> N; int arr[50][2]; int rank[50]; //입력 for (int i = 0; i > arr[i][0] >> arr[i][1]; } for (int i = 0; i < N; i++.. 2022. 7. 22.