1. 코딩테스트
오늘 코딩테스트는 프로그래머스 level 2 호텔 대실 문제를 풀었습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/155651
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 뭘로 풀지?
- string 처리와 우선순위 큐를 통해서 문제를 풀었습니다. (+정렬)
- string 처리
- 입력으로 들어온 값은 string이고 ":" 가 중간에 들어가있기 때문에 substr으로 해당 값을 없앤 후
- stoi함수를 통해서 int값으로 변환하여 (시작 시간, 끝나는 시간) 순서로 넣어주었습니다. (vector에 넣어줌)
- 정렬
- vector를 sort 하는데, 이때 시작시간이 빠른 순서로 정렬하게 됩니다.
- 그 결과 시작시간이 빠른 순서대로 vector를 순환하면서, 우선순위 큐에 값을 넣게 됩니다.
- 우선순위 큐에 값을 넣을 때, (끝나는 시간, 시작 시간) 순서로 넣어주어야 합니다.
- 그 이유는 우선순위 큐에서 끝나는 시간이 가장 빠른 순서대로 정렬되어 있기 때문에, 새로운 값을 넣기전에 빼는 작업을 해야하기 때문입니다.
- 예를 들어
- 우선순위 큐에 [[1520, 1420], [1700, 1500], [1920, 1410]] 이렇게 값이 있을때
- [1820, 1640] 이 들어온다면, 1820이라는 시작시간이 가장 빠른 끝나는 시간인 1520보다 크기에 우선순위 큐에서 pop을 해서 객실의 수를 최소화 할 수 있습니다.
- 주의점
- 주의할 점은 시간에서 분 자리가 50을 넘는 경우는 시간으로 올림 처리하는 부분이 필요합니다.
- string 처리
- string 처리와 우선순위 큐를 통해서 문제를 풀었습니다. (+정렬)
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int solution(vector<vector<string>> book_time)
{
int answer = 0;
vector<pair<int,int>> vec;
for(int i = 0; i < book_time.size(); ++i)
{
string temp1;
string temp2;
temp1 += book_time[i][0].substr(0,2);
temp1 += book_time[i][0].substr(3,2);
temp2 += book_time[i][1].substr(0,2);
temp2 += book_time[i][1].substr(3,2);
vec.push_back({stoi(temp1), stoi(temp2)});
}
sort(vec.begin(), vec.end());//start 기준으로 정렬
priority_queue<pair<int, int>, vector<pair<int,int>>, greater<pair<int,int>> > pq; //end, start, 오름차순
for(int i = 0; i < vec.size(); ++i)
{
//가장 빨리 끝나는 방 + 10 보다 새로운 방의 시작점이 늦으면 pop
if(!pq.empty())
{
//시간 올림 처리
int nextTime = pq.top().first + 10;
if(nextTime % 100 >= 60)
{
nextTime = (nextTime / 100 + 1) * 100 + nextTime % 10;
}
if(nextTime <= 2359 && nextTime <= vec[i].first)
pq.pop();
}
pq.push({vec[i].second, vec[i].first});
answer = max(answer, (int)pq.size());
}
return answer;
}
2. 언리얼 공부
아이템 관련 공부를 진행중에 있습니다.
- 아이템 충돌 및 클래스 구조에 관해서 공부를 하였습니다.
Unreal Engine - 아이템 만들기 (+충돌 처리)
1. 목표게임상에서 캐릭터와 아이템 간의 충돌이 발생하면 특정 이벤트가 발생하도록 구현해야 한다.구현해야 할 것은 아래와 같다.아이템 클래스와 그것을 상속받은 여러 자식 아이템 클래스
gbleem.tistory.com
- 랜덤한 아이템 스폰 및 캐릭터와의 연동 내용 공부중에 있습니다.
'TIL' 카테고리의 다른 글
TIL day 36 (0) | 2025.02.10 |
---|---|
TIL day 35 (2) | 2025.02.07 |
TIL day 33 (0) | 2025.02.05 |
TIL day 32 (0) | 2025.02.04 |
TIL day 31 (0) | 2025.02.03 |