Coding Interview/프로그래머스 5

[C++] 프로그래머스 [1차]프렌즈4블록

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17679# 리뷰 문제유형: 구현, 그래프 탐색 실수한 부분 블록이 떨어지고 난 뒤 구현 완료 후 2개의 테스트 케이스가 틀려서 해결하지 못한 상태로 그냥 넘어갔었다. 아마 실제 시험이었다면 틀림 처리 당했을 것이다. 내가 실수한 부분은 블록이 '터지고 난 뒤' 위에서 아래로 차곡차곡 쌓이는 부분이다. 바로 위 인덱스로만 덮어씌웠기 때문에, 몇 가지 예제가 틀렸던 것이다. 2x2 블록을 형성한 부분과 겹침을 허용하면서 2x2 블록을 확인하기 2x2 블록이 다른 2x2 블록과 겹쳐서, 7개 혹은 6개를 만들 수 있었다. 나는 이러한 중복 카운팅을 제거하기 위해, BFS이후 2x2 블록에 해당하는 x..

[C++] 프로그래머스 [3차] 파일명 정렬 - 연속한 문자열 처리, 정렬함수 구현하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17686# 리뷰 문제 유형: 구현, 문자열 처리, 정렬 주어진 두 문자열을 정렬하기 위한 커스텀 함수를 작성할 때 복사-붙여넣기 이후 수정하는 과정에서 동기화가 안 되었다. 조그마한 부분을 찾아내는 것이 힘드므로, 중복되는 부분은 약간의 생각 이후 함수화하는 것이 편리함을 깨달았다. 핵심 연속한 문자열에서 문자와 숫자를 구분해낼 수 있는가 → sstream, strind indexing 후 += chararcter 연산 혹은 push_back 문자열을 사전 순으로 정렬할 수 있는가 → tolower를 사용할 수 있는가(프로그래머스 레퍼런스를 참고하면 되는데, std::transform을 이용한 ..

[C++] 프로그래머스 주차요금계산 - 성공했으나 효율적이지 않음.

문제 https://school.programmers.co.kr/learn/courses/30/lessons/92341 리뷰 차량 번호와 소요시간을 계산해서, 주어진 공식에 맞게 계산한 값을 차량번호가 작은 순서대로 리턴하면 된다. "들어갔다 나가지 않았다면" 을 보다 간단하게 "기록이 홀수 개라면" 이라고 조건을 생각할 수 있을 것이고, (굳이 map을 만들어 false, true로 구분할 필요는 없다) 주차한 시간에 대한 계산은 hour min 구분은 필요 없으므로 min 단위로 바꿔 계산하면 편할 것이며, (굳이 min이 작은 경우 hour에서 1을 빼고... 하는 사람이 하는 계산 처럼 구현할 필요는 없다) 차량번호가 작은 순서대로 리턴하는 것은 차량 번호를 int로 하는 vector를 선언해서 ..

[C++] 프로그래머스 스킬트리 - 인덱싱 방법 실패, 해시 맵 알고리즘 구상

문제 https://school.programmers.co.kr/learn/courses/30/lessons/49993#fn1 리뷰 주어진 skill의 character 순서에 맞는 skill_trees 인지를 구분하는 방법을 찾는 데 오랜 시간이 걸렸다. 처음에는 skill_trees의 string과 비교하면서 같은 문자일 경우, 이전 idx보다 작은 위치라면 false, ... 의 방식으로 indexing 으로만 해결하려고 하였다(그랬더니 2~3개의 예외 케이스에서 자꾸 실패했다) 실패하는 예외케이스를 생각할 수 없어 그 다음에는 배열을 만들어 비교하려고 하였으나, 엉성해서 성공하지 못했다. 어떠한 알고리즘을 사용해야 하는지 쉽게 떠올리지 못했고, 다소 빠르게 해결하고자 마음이 급했다. 포인트 str..

[C++]프로그래머스 [1차] 캐시

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17680 리뷰 자료구조 및 알고리즘 Least Recently Used → 벡터와 같은 자료구조에서 Hit일 경우 remove and push back을 통해 '리뉴얼' 함으로써 삭제를 방지 문제 풀이에서의 핵심 포인트 Hit/Miss에 대한 case 구현하기: 굳이 몇 번 Hit되었는지 count할 필요 없이, Hit일 경우 remove and push back 대/소문자 구별 없이 처리하기: - cpp reference가 사용가능하다면 아래와 같은 함수(ToLower) 제작 - 사용이 안 된다면 #include strcasecmp(a.c_str(), b.c_str()) == 0 을 이용 Ca..