본문 바로가기

분류 전체보기380

백준 1038 c++ "감소하는 수" -PlusUltraCode- https://www.acmicpc.net/problem/1038 [필자 사고]문제를 보고 시간복잡도를 생각했다. dfs를 이용하면 모든 수를 시간안에 완료할 수 있을 지 ..일의 자리 수부터 시작하여 마지막 digit을 관리하면서 dfs로 다음 수로 나아가게 되면 N의 최대가 1000000이기 때문에 1억을 넘지 않으므로 충분히 시간복잡도가 널널하다. 좋다 이방법으로 가보자 하는 식으로 문제를 해결했다. [코드 해설]Input() 함수사용자로부터 정수 N을 입력받는다.N은 "N번째 감소하는 수"를 구하기 위한 목표 인덱스이다.dfs(long long number, int last_digit) 함수감소하는 수를 재귀적으로 생성하는 백트래킹 함수이다.number는 현재까지 만든 감소하는 수이며,last_d.. 2025. 6. 10.
백준 11000 c++ "강의실 배정" -PlusUltraCode- https://www.acmicpc.net/problem/11000 [필자 사고]그리디 문제이다. 특히 정렬 관련 처음 배열을 시작순으로 정렬한뒤 매번 해당 node 를 체크하는 형식으로 문제를 해겨했다.우선순위 큐에 매번 반복때마다 end시간을 넣어두고 매번 start시간과 비교를 하여 start시간보다 작거나 같으면 빼는 형식으로 문제를 해결했다. 이렇게 하면 마지막에 최대 필요한 강의실 수가 나온다. [코드 해설]1. Input() 함수이 함수는 사용자로부터 수업의 시작 시간과 종료 시간을 입력받아 arr 벡터에 저장한다. 각 수업은 (시작시간, 종료시간) 형태의 pair로 저장되며, 모든 입력이 끝난 후에는 시작시간을 기준으로 오름차순 정렬한다. 이 정렬을 통해 시간 순서대로 수업을 처리할 수 있.. 2025. 6. 10.
백준 21608 c++ "상어 초등학교" -PlusUltraCode- https://www.acmicpc.net/problem/21608 [필자 사고]구현 문제다문제에서 주어진 조건은 3가지다 다행이 까탈스러운 조건이 아니라 한번에 우선순위 큐를 이용하여 정렬 가능한 요구조건이다. 아래는 자세한 코드해설이다.[코드 해설]1. Input 함수입력으로부터 격자의 크기 N을 받고, N×N 크기의 2차원 벡터 arr를 0으로 초기화합니다.이후 N×N 명의 학생(또는 사용자) 정보가 들어오는데, 각 학생마다 자신의 번호 me와 좋아하는 친구 4명 번호(a, b, c, d)를 입력받습니다.이 정보를 likes 벡터에 저장하며, 학생 번호를 키로 하여 인덱스를 빠르게 찾을 수 있도록 myMap이라는 맵에 저장합니다.2. isInside 함수좌표 (sero, garo)가 격자 내에 존재.. 2025. 6. 3.
백준 1011 c++ "Fly me to the Alpha Centauri" https://www.acmicpc.net/problem/1011[필자 사고][1] 완전 대칭 (1→2→…→k→…→2→1)이동 횟수: 2k - 1총 이동 거리: k^2text복사편집이동 순서: 1 2 3 ... k-1 k k-1 ... 2 1 개수: k k-1 합: 1 + 2 + ... + k + (k-1 + ... + 1) = k^2 이 경우 거리 d == k^2이면, 정답은 2k - 1[2] 한 번 더 추가 (1→2→…→k→k→…→2→1)이동 횟수: 2k총 이동 거리: k^2 + ktext복사편집이동 순서: 1 2 3 ... k-1 k k k-1 ... 2 1 (중간에 k를 한 번 더) 합: k^2 + k 이 경우 거리 k^2 [3] k를 넘어서야 함 (1→2→…→k→k+1→…)이동 횟수: 2k + .. 2025. 6. 2.