본문 바로가기

전체 글384

백준 16139 c++ "인간-컴퓨터 상호작용" https://www.acmicpc.net/problem/16139[필자 사고]단순 브루트포스 알고리즘을 이용하면 N==200000 이기 때문에 시간초과가 발생한다.그래서 사전에 누적합을 이용하여 미리 문자의 갯수를 갱신해 놓은 상태로 문제를 해결했다. 아래는 자세한 코드 해설이다.[코드 해설]1. 입출력 최적화가장 먼저, 입출력 속도를 빠르게 하기 위해 표준 입출력 동기화를 끊고, 입출력 묶음을 분리해 속도를 높인다. 이는 대규모 데이터가 들어올 경우 성능에 큰 차이를 만든다.2. 입력 처리문자열 S와 쿼리의 개수 q를 입력받는다. 이후 문자 별 등장 횟수를 빠르게 계산할 수 있도록 전처리를 진행한다. 이를 위해 2차원 배열을 사용하여 알파벳마다 누적 등장 횟수를 저장할 수 있는 구조를 만든다.3. 누.. 2025. 6. 1.
백준 1743 c++ "음식물 피하기" -PlusUltraCode- https://www.acmicpc.net/problem/1743 [필자 사고]단순한 BFS 탐색 문제다. 전체 배열을 조사해서 1번 및 방문을 안했을 시 BFS탐색을 시작한다.탐색하면서 1이 갯수마다 maxCount를 갱신해주는 형태로 해당 문제를 타파했다. 아래는 자세한 코드 해설이다. [코드 해설]1. Input()입력을 처리하는 함수입니다.N, M, K를 입력받고, 격자판 크기에 맞게 visited와 arr 배열을 초기화합니다.K개의 음식물 위치를 받아 arr[a][b] = 1로 설정하여 해당 위치에 음식물이 있음을 표시합니다.2. isInside(int sero, int garo)주어진 좌표가 격자판 범위 내에 존재하는지 확인하는 함수입니다.1 3. BFS(int sero, int garo)주.. 2025. 6. 1.
백준 2529 c++ "부등호" -PlusUltraCode- https://www.acmicpc.net/problem/2529 [필자 사고]처음에 어떻게 접근해야 될지 고민했는데 부르트포스 알고리즘이 떠올랐다. 그리고 순서가 있는 조합 느낌이라 백트래킹도 생각이 났다. 그렇다 이 두 알고리즘을 적용하면 해당 문제를 타파할 수 있다. 아래는 자세한 코드 해설이다.[코드 해설]전역 변수 선언int k: 부등호 개수char sign[10]: 부등호 기호들을 저장하는 배열 ()bool visited[10]: 숫자 0~9 중 현재 사용 중인 숫자를 표시하는 배열vector result: 조건을 만족하는 숫자 조합들을 문자열로 저장하는 리스트bool check(char a, char b, char op)역할: 두 문자 a, b와 부등호 op를 받아서 조건이 참인지 확인하는.. 2025. 5. 29.
백준 6588 c++ "골드바흐의 추측" -PlusUltraCode- https://www.acmicpc.net/problem/6588[필자 사고]에라토스테네스의 채 알고리즘을 알고 있으면 해당 문제를 쉽게 해결할 수 있다. 초기에 해당 소수들을 판정한 뒤 주어진 숫자들을 3, 5 ,7 등 소수 홀수부터 점검하여 diff 가 소수라고 한다면 문제 해결이다. 아래는 자세한 코드 해설이다.[코드 해설]Input_Init()소수 판별을 위해 isPrime 벡터를 크기 MAX+1로 true로 초기화한 후, 에라토스테네스의 체 알고리즘을 사용해 소수가 아닌 수를 false로 설정함.0과 1은 소수가 아니므로 false로 설정함.2부터 sqrt(MAX)까지 순회하면서, 해당 수가 소수이면 그 배수들을 모두 소수가 아닌 것으로 표시함.Print(int num, int leftSosu,.. 2025. 5. 29.