Level 2. 방문 길이 bool 타입의 visited[fromX][fromY][toX][toY] 4차원 배열에 방문 여부를 저장하여 해결했다. 예를 들어, 한 번 표시할 때는 (3,4) -> (4, 4)와 (4, 4) -> (3, 4)를 함께 표시해야 한다. 인덱스는 매크로 함수를 만들어 -5 ~ 5를 0 ~ 10으로 매핑했다. #include #include #define I(x) ((x) + 5) using namespace std; int solution(string dirs) { int answer = 0; bool visited[11][11][11][11] = {false}; pair current = {I(0), I(0)}; for (char c : dirs) { pair t = curre..
Level 2. 짝지어 제거하기 첫 번째 문제는 정답을 맞으나 효율성 테스트에서 실패했다. 앞에서부터 같은 두 개의 문자를 찾아 제거하며 반복하는 방식이다. 최악의 경우 O(n²)이 소요되기 때문인 것 같다. #include using namespace std; int solution(string s) { auto find_pair = [](string& s) -> size_t { size_t len = s.length() - 1; for (int i = 0; i < len; ++i) if (s[i] == s[i + 1]) return i; return string::npos; }; s += '0'; for (size_t pos = find_pair(s); pos != string::npos; pos =..
Level 2. 영어 끝말잇기 끝말잇기의 확인은 이전 단어의 마지막 문자를 저장하여 확인한다. 같은 단어의 검사는 unordered_set을 활용했다. unorderd_set.insert() 함수는 pair 타입의 쌍을 반환하는데, 두 번째 bool 값이 중복을 확인한 성공 여부이다. #include #include #include using namespace std; vector solution(int n, vector words) { size_t size = words.size(); char lastChar = words.front().front(); unordered_set uset; for (int i = 0; i < size; ++i) { string& s = words[i]; if (uset...
Level 2. JadenCase 문자열 만들기 #include using namespace std; string solution(string s) { char prev = ' '; for (char& cur : s) prev = cur = (prev == ' ' && isalpha(cur) ? ::toupper : ::tolower)(cur); return s; }
입력을 처리하기 전에 중복이 존재하는지 확인해야 할 때, map 타입으로 bool 값을 따로 저장하지 않아도 된다. set과 unordered_set은 insert() 함수의 반환 값으로 삽입된(혹은 이미 있는) 원소의 반복자와 중복을 확인한 성공 여부를 pair 쌍으로 반환한다. #include #include using namespace std; void main() { set st; pair reuslt = st.insert("LoL!!"); cout
Level 2. 주차 요금 계산 입차일 경우 차량 번호와 입차 시간을 기록하고, 출차일 경우 주차 시간을 계산해 더한 후 입차 시간을 초기화한다. map의 키가 차량 번호이기 때문에 작은 순서대로 이미 정렬되어 있다. 입차 시간이 초기화되지 않은(-1) 차들은 출차 시간을 23:59로 하여 한 번 더 더해주어야 한다. 벡터에 원소를 추가할 때 메모리 재할당을 방지하기 위해 vector.reserve() 함수로 용량을 미리 지정했다. #include #include #include #include #include #include using namespace std; struct Record { int time; int carId; bool isIn; Record(string record) { time = ..