#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string answer = "";
int a=0;
if(s.size()%2==0)
{
a =s.size()/2;
answer.push_back(s[a-1]);
answer.push_back(s[a]);
}
else
{
a = (s.size()-1)/2;
answer.push_back(s[a]);
}
return answer;
}
a =s.size()/2;에서 static_cast<int>를 쓰기보단, 사실 a가 size_t로 가는 게 더 자연스럽다substr() 가 더 어울릴 것.string.substr(시작index, 자를 문자 갯수)s.substr((s.size() - 1) / 2, s.size() % 2 == 0 ? 2 : 1)| 자료구조 | 핵심 특성 | 접근 | 검색 | 삽입/삭제 |
|---|---|---|---|---|
| vector | 순서 있는 연속 배열 | O(1) | O(n) | 끝 O(1) |
| stack | LIFO (후입선출) | top만 | — | O(1) |
| queue | FIFO (선입선출) | front만 | — | O(1) |
| map | key-value, 정렬 | O(log n) | O(log n) | O(log n) |
| set | key만, 정렬 | — | O(log n) | O(log n) |
| unordered_map | key-value, 해시 | O(1) 평균 | O(1) 평균 | O(1) 평균 |
| unordered_set | key만, 해시 | — | O(1) 평균 | O(1) 평균 |

set 계열이 와따 - 정렬 필요없으면 unordered_setvector<char>와 stack<char>vector<pair>, map, unordered_mapmap
LIFO로 동작하면 그것이 stack. 인터페이스는 같지만, 구현 방식을 회사마다 다르게 할 수 있는 것 -> ADT라고 부름자료구조 선택은 FPS에 직결. 매 프레임 검색을 O(n) 검색으로 넣으면? 오브젝트 많을수록 선형급수적으로 프레임이 떨어짐.
TSet, TMap, TArray 왜 사용하는지 항상 고심할 것. 서버 비용에도 직결. 사용자 100만 명의 접속 상태를 관리하고 싶을 때? Vector 쓰면 100만, unordered_set 쓰면 1
코테 시간 초과의 가장 흔한 원인.