백준/그리디13 백준 11000 c++ "강의실 배정" -PlusUltraCode- https://www.acmicpc.net/problem/11000 [필자 사고]그리디 문제이다. 특히 정렬 관련 처음 배열을 시작순으로 정렬한뒤 매번 해당 node 를 체크하는 형식으로 문제를 해겨했다.우선순위 큐에 매번 반복때마다 end시간을 넣어두고 매번 start시간과 비교를 하여 start시간보다 작거나 같으면 빼는 형식으로 문제를 해결했다. 이렇게 하면 마지막에 최대 필요한 강의실 수가 나온다. [코드 해설]1. Input() 함수이 함수는 사용자로부터 수업의 시작 시간과 종료 시간을 입력받아 arr 벡터에 저장한다. 각 수업은 (시작시간, 종료시간) 형태의 pair로 저장되며, 모든 입력이 끝난 후에는 시작시간을 기준으로 오름차순 정렬한다. 이 정렬을 통해 시간 순서대로 수업을 처리할 수 있.. 2025. 6. 10. 백준 1105 c++ "팔" -PlusUltraCode- https://www.acmicpc.net/problem/1105 [필자 사고]수의 제한이 20억이다 그냥 단순 비교를 하게 되면 이 문제는 시간초과가 난다.잠시 생각을 해보니 그리디 알고리즘이 떠올려졌다.그래 탐욕적 접근을 해보자조심히 생각해보니 두 문자열이라 가정하고 8의 갯수를 새면 되지 않을까?? 입력 값들 경우의 수를 다 해보니 다 맞았따. 하지만 코드를 작성했는데 틀렸다. 이유를 곰곰히 생각해보니 앞자리의 8의 갯수만 새면되는 것이다.생각해보니 사잇값 정리가 떠올려졌다. 아래는 자세한 코드 해설이다.[코드 해설]Input 함수사용자로부터 두 문자열 str1과 str2를 입력받는다.이 문자열들은 숫자 형태이며, 앞자리가 동일할 수도 다를 수도 있다.Game_Start 함수먼저 두 문자열의 길이.. 2025. 5. 27. 백준 1082 c++ "방 번호" -PlusUltraCode- https://www.acmicpc.net/problem/1082 [필자 사고]첫째자리 오는 수는 0이 올수 없기때문에 이 부분 주의해야 한다.먼저 필자는 가장 작은 값어치를 찾아야 했다. 실제 인덱스가 0인 경우와 아닌 경우 둘다 찾았다. 그다음 resultArr배열에 첫재짜리만 따로 넣어준뒤 반복문을 이용하여 최소비용으로 만들 수 있는 최대 자릿수를 알아냈다. 그다음 전체 반복문을 조회하여 해당 인덱스보다 큰 인덱스인데 값어치가 아직 여유있는 경우들을 하나씩 바꿔나갔다. 아래는 자세한 코드 해설이다.[코드 해설]1. 입력 단계먼저 사용할 수 있는 숫자의 개수를 입력받고, 각 숫자를 사용하기 위한 비용을 벡터에 저장합니다.그리고 사용할 수 있는 총 금액을 입력받습니다.2. 가장 저렴한 숫자 두 개를 .. 2025. 5. 25. 백준 2812 c++ "크게 만들기" -PlusUltraCode- https://www.acmicpc.net/problem/2812 [필자 사고]조심해야 될 부분이 많은 문제였다. 일단 필자는 처음에는 이 문제를 풀 때 stack을 이용해서 탐욕적으로 문제를 접근하는 방식으로 해결했다.처음 필자가 간과했던 점은 무한루프가 되는 조건이 있었는데 그 부분을 break을 빼먹었다. 다음으로 조심해야 될 부분은 K가 없엉지지 않았는데 작업이 끝나는 경우를 고려하지 않았따. K가 남아있을경우는 마지막 숫자들을 제거해줘야 한다. 다음은 자세한 코드 해설이다.[코드 해설]🔹 Input() 함수사용자로부터 입력을 받는 함수입니다.첫 번째 줄에서 숫자의 전체 길이 N과 제거해야 할 숫자의 개수 K를 입력받습니다.두 번째 줄에서 숫자 문자열을 입력받아 str 변수에 저장합니다.🔹 .. 2025. 5. 25. 이전 1 2 3 4 다음