반응형
반응형
https://www.acmicpc.net/problem/16637 16637번: 괄호 추가하기 길이가 N인 수식이 있다. 수식은 0보다 크거나 같고, 9보다 작거나 같은 정수와 연산자(+, -, ×)로 이루어져 있다. 연산자 우선순위는 모두 동일하기 때문에, 수식을 계산할 때는 왼쪽에서부터 순 www.acmicpc.net 난이도: solved.ac 골드 3 알고리즘 분류 구현, 브루트포스 알고리즘 접근 방법 및 구현 괄호는 한 번에 최대 두 개의 숫자만 묶을 수 있으므로 괄호는 s[i]와 s[i+2]를 묶는다. s[i+2]가 문자열 크기를 벗어나지 않으면 괄호를 만들어 계산한다. 만든 괄호 안을 먼저 계산한 후, 지금까지 계산했던 결과와 함께 s[i-1]에 있는 연산자를 통해 계산한다. 괄호를 만들어 ..
https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 난이도: solved.ac 골드 4 접근 방법 이 문제는 N과 M의 범위가 적어서 브루트포스 방식으로 풀 수 있다. 따라서 0인 부분 중 3개를 골라 벽을 세우는 모든 경우의 수를 두고 안전영역의 개수를 구했다. 0인 부분의 개수를 n이라고 하면, nC3의 경우의 수를 모두 파악해야 한다. 구현 nC3개의 경우의 수를 만드는 방법은 다음과 같다. 우선, 0인 부분의 좌표를 미리 저장해둔다. 나는 vacant라..
https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 난이도: solved.ac 골드 4 구현 방법 board라는 2차원 배열에 뱀의 현재 모습을 그렸고, dir라는 2차원 배열에 뱀의 머리(head)가 이동했던 방향을 나타내었다. 뱀의 머리의 위치와 방향을 나타내기 위해 H라는 구조체를 만들었고, 꼬리(tail)의 위치도 저장하기 위해 T라는 구조체를 만들었다. 초기 t(시간) 값은 1로 주었고, 이동할 때마다 1씩 증가하도록 하였다. 이동할 때는 먼저 ..
https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 난이도: solved.ac 골드 5 구현 방법 문제에서 주어진 세 가지 조건 그대로 구현하면 되는 문제다. 먼저 첫 번째 조건을 살펴보자. "비어있는 칸 중에서 좋아하는 학생이 인접한 칸에 가장 많은 칸으로 자리를 정한다." 이를 구현하기 위해 학생들을 배치할 공간 board[N][N]을 만들고, board가 0인 모든 빈자리를 기준으로 인접한 상하좌우 캉을 탐색해 좋아하는 학생이 몇 ..
https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 난이도: solved.ac 골드 3 알고리즘 분류 그래프 탐색, 너비 우선 탐색(BFS) 접근 방법 지금까지 풀었던 BFS 문제에서 사용했던 visited 배열에 한 차원을 더 추가시켜 벽을 부순 적이 없는 상태에서의 방문 표시는 visited[][][0]에 나타내고, 벽을 부순 적이 있는 상태에서의 방문 표시는 visited[][][1]에 나타내었다. 큐에는 현재 위치 ..