정렬20 [greedy / c++] 최대의 모험단 수 만들기 그리디 관련 공부가 필요해서 아래 유튜브의 그리디 영상을 보고 이해하는데 시간이 좀 걸렸던 문제를 코드로 하나하나 이해해가며 따라해보았다 생각보다 문제가 이해하기 난해했다. 코드 옆에 주석에 문제와 이해한 해석을 달아보았다 https://www.youtube.com/watch?v=2zjoKjt97vQ #include using namespace std; int n; vector arr; // 모험가 길드 문제 // n명의 모험가가 있다. 공포도가 x명인 모험가는 x명 이상의 모험단에 // 참여해야만 출발이 가능하다. 최대로 떠날 수 있는 모험단의 수는? // 모험가가 모험단에 모두 속할 필요는 없다. int main(){ // 공포도가 작은 수부터 모험단을 만들어야 // 최대의 모험단 수를 얻을 수 있다.. 2022. 6. 21. [프로그래머스 2 / c++] 전화번호 목록 - 해시 해쉬를 이용해서 풀라는 문제 같은데, 정렬을 사용 후 앞뒤만 비교하는 것이 더 효율적인 함정 문제이다 하지만 배우는 입장에서는 두 경우 모두 배울점이 많았다 정렬은 sort 후 다음 요소에 이전 요소를 find하여 0인지로 접두어를 찾는 아이디어!(없으면 ::npos가 나올 것이다) 해시는 아직 사용 경험도 부족한 만큼 원리이해와 key값이 없을때 key가 map에 추가되고 0의 value를 갖는점, substr 을 루프에 활용하는 아이디어 등을 배울 수 있었다 #include using namespace std; bool solution(vector phone_book) { // 1. 정렬 후, 뒤의 숫자에서 앞의 숫자 find 하기 // 오름차순 정렬 후, 뒤의 숫자가 앞의 숫자를 포함하는지 확인. .. 2022. 6. 21. a 에 b가 확인 혹은 찾는 문제는 - 해시 hash - 문제 a에 b가 있는지, 포함되어 있는지, 누가 무엇을 한 사람인지 등등의 문제는 a에서 b를 찾아 세야 되는 문제이고 해쉬 맵을 사용한 문제이다 unordered_map 과 map을 사용해서 풀자 key에는 찾을값을 넣고 value에는 숫자로 초기화 하고 카운트를 하고 빼는 것으로 있는지 없는지 확인가능하다 pair로 key와 value를 묶어서 map에 입력하거나 map[ key로 넣을 값 or배열, 상수값(상수로 map 전체 초기화) or 배열] 등을 통해 해쉬맵을 만들 수 있다 해시 맵을 만들었으면 그 해당key 일때 value를 조작하여 value를 가지는 "개수"를 찾거나 ( value로 키는 못구한다) a와 b의 겹치는 부분이 있는지를 찾기 위해서 부분의 문자열을 뽑는 substr 등으로 뽑아낸 .. 2022. 6. 21. [프로그래머스 1 / c++] k번째 수 2차원 벡터를 인덱스로 접근해서 2차원 배열 처럼 푸는 문제이다 2차원 배열을 생각은 했으나, 벡터인데 인덱스를? 하고 헤맸던 문제이다 맞다. 벡터도 배열처럼 인덱스로 접근 가능하다. 찾아보며 벡터에 대해 좀 더 이해하게 됐던 문제이다 이렇게 for문을 2번써서 문제를 그대로 구현가능하지만 #include using namespace std; vector solution(vector array, vector commands) { vector answer; // 1번째 인덱스를 돌며 반복할 for문 for(int i=0; i 2022. 6. 20. 이전 1 2 3 4 5 다음