| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- fastapi
- AWS
- GoormIDE
- S3
- 이미지 업로드
- session
- oauth2.0
- wss 연결 실패
- spring boot
- 자바 orm
- 도메인 주도 개발
- 백준 10815 # 백준 Java
- presigned url
- 관점 지향 프로그래밍
- OpenAI API
- Flask
- springboot
- logout
- spring websocket nginx 설정
- 패러다임 불일치
- 구글 로그인
- jwt
- @Valid
- 예외 처리
- 소셜 로그인
- ec2 nginx websocket reverse proxy
- CustomException
- 스프링부트
- 개발 프로젝트
- validation
Archives
- Today
- Total
개발세발은 안되요
[C++] 백준 2931 : 회의실 배정 본문
문제
https://www.acmicpc.net/problem/1931
풀이
1. 회의실 정보를 정렬 : end 기준 오름차순 정렬 + 동일 end에 대해 start 기준 오름차순
2. 마지막으로 선택된 종료시간을 기억하면서, 해당 종료시간 뒤에 현재 확인한 회의 end 값 갱신
코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct State{
long long start, end;
};
int n;
vector<State> v;
// end 기준 오름차순, 같으면 start 오름차순
bool cmp(const State& a, const State& b) {
if (a.end == b.end) return a.start < b.start;
return a.end < b.end;
}
int main()
{
cin >> n;
for(int i=0; i<n; i++){
long long s, e;
cin >> s >> e;
v.push_back({s,e});
}
// end 기준 오름차순 정렬
sort(v.begin(), v.end(), cmp);
int ans = 0;
long long last_end = 0;
for(State cur : v){
if(cur.start >= last_end){
ans++;
last_end = cur.end;
}
}
cout << ans << "\n";
return 0;
}
메모
start 기준 오름차순 정렬인지, end 기준 오름차순 정렬인지 햇갈렸던 문제였다~ ㅜ
그리고 cmp 함수 작성하는 것 더 공부하기
'알고리즘 > 백준' 카테고리의 다른 글
| [C++] BJO 14888 : 연산자 끼워넣기 (0) | 2025.11.28 |
|---|---|
| [JAVA] BJO 9466 : 텀 프로젝트 (0) | 2025.11.19 |
| [C++] 백준 2638 : 치즈 (0) | 2025.09.05 |
| [C++] 백준 2512 : 예산 (0) | 2025.08.19 |
| [C++] 백준 16139 : 인가-컴퓨터 상호작용 (0) | 2025.08.19 |