목록2025/04/01 (2)
Sonji-log

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/17684분류구현, 해시, 문자열시도한 방법초기에 모든 알파벳을 인덱스에 순차대로 담아 사전을 초기화한다.이후 버퍼에 대상 문자열의 한 글자씩 담고, 사전에 없을 경우 색인에 추가하며 버퍼를 flush하며 대상 문자열의 인덱스를 한 칸씩 밀어준다.위 과정을 마치고 나면 answer에 방금 검색된 색인을 담아 전달한다. 방향성 자체는 맞았지만, GPT 리팩토링 결과 몇 군데 지적받았다. 색인에 등록할 때는 탐색의 용이함을 확보하기 위해 한 글자씩 등록된 부분에 vector로 색인을 추가했지만, map 컨테이너에 내장된 find 함수를 사용하므로 굳이 리스트로 구현할 필요가 없었다.map> -> ..
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12927분류구현, 우선순위, 그리디 알고리즘시도한 방법문제에서 원하는 야근 피로도는 남은 작업양의 제곱합으로 구한다. 제곱은 대상 수가 클수록 더 빠르게 커지므로, 작업 개수 자체가 줄어드는 것 보다 각 작업의 남은 시간을 최대한 균일하고 적게 만드는 편이 제곱합을 줄이는 더 좋은 방법이다. 단순하게 남은 시간만큼 루프를 돌며 가장 큰 값에서 1씩 감산하는 방법을 선택했다.남은 작업량을 대상으로 Priority Queue를 사용하면 항상 가장 많이 남은 작업이 맨 앞으로 오기 때문에, 루프를 돌면서 Priority Queue의 맨 앞 작업이 1씩 감산하게 작성했다. 한 Epoch당 남아있는 ..