알고리즘119 [프로그래머스] 구명보트 c++ 풀이 보트는 최대 두명씩 탈 수 있기 때문에 무거운 순과 가벼운 순으로 짝을 맞추어 주면된다. a>=b>=c>=d라고 할때 {a,d} {b,c}로 짝은 맞추어준다. a+d =idx2) break; if(people[idx2]+people[idx1] 2024. 1. 29. [프로그래머스] 큰 수 만들기 c++ 풀이 앞자리에 큰 수가 들어가야한다. 1. 앞자리에 큰 수가 들어갈 수 있는 후보를 바로 옆가 비교하여 정한다. 2. 임의의 수 a,b,c,d가 있을때 수 abcd83이 있다면 a와 b중 큰거를 택하고 작은것을 삭제한다. 3. b 삭제 후 acd83 에서 a와 c를 비교해서 작은 것을 삭제한다. 4. c가 더 크다면 c와 d를 비교해서 더 작은 것을 삭제한다. 4. 2,3,4를 k가 0이 될 때까지 반복한다. #include #include #include using namespace std; string solution(string number, int k) { string answer = ""; for(int i=0;i 2024. 1. 29. [프로그래머스] 조이스틱 c++ 풀이 정답이지만 비효율적인 코드이다. 매 순간마다 양 옆에 'A'가 아닌 글자 중에 더 가까운 곳을 선택한다. 이렇게 되면 왔다갔다하면서 한번만 가도 될 길에 여러번 갈 수 있다. 또한 출발시점에서 더 먼곳을 먼저 가는갈때 최소이동횟수를 만드는 케이스도 있다. 그리디 알고리즘 문제이지만 매번 어디를 갈지 하는 선택을 그리디로 하면 안된다. 모든 'A'가 아닌 위치를 각각 먼저가는 것을 검사하면 정답이나온다. #include #include #include #include using namespace std; int name_size=0; string name; int search(int start_cursor,int f_ans){ vectorchk; chk.resize(name_size); int ans.. 2024. 1. 26. [프로그래머스] 체육복 c++ 풀이 1. 앞뒤로 모두 체육복을 빌릴 수 있다면 앞에 있는 체육복을 빌린다. (뒤에 있는 체육복은 2번 앞에 있는 사람이 빌릴수도 있기 때문에) 2. 여벌을 가지고 왔지만 도난당한 사람은 본인 것을 입어야하기 때문에 체육복을 입을 수는 있지만 앞뒤로 빌려줄 수 없다. #include #include #include using namespace std; bool students[32]; int solution(int n, vector lost, vector reserve) { int answer = 0; for(int i=0;i 2024. 1. 24. 이전 1 2 3 4 5 6 7 ··· 30 다음