본문 바로가기

728x90

전체 글

[C++]백준 1422번: 숫자의 신 문제 https://www.acmicpc.net/problem/1422 1422번: 숫자의 신 첫째 줄에 K와 N이 공백을 사이에 두고 주어진다. K와 N은 각각 50보다 작거나 같은 자연수이고, N은 K보다 크거나 같다. 둘째 줄에는 K개의 수가 한 줄에 하나씩 주어진다. 각 수는 1,000,000,000보다 www.acmicpc.net 문제이해 K와 N을 입력한다. (1 ≤ K ≤ N ≤ 50) 둘째 줄부터 K개의 수(X)를 한 줄에 하나씩 입력한다. (1 ≤ X ≤ 1,000,000,000) N개의 수를 뽑아서 연결해 만들 수 있는 가장 큰 수를 출력한다. 문제를 해결하기 위해서는 수들을 특정 규칙에 따라 정렬해야 한다. 다음의 예시를 보자. 199 10 199와 10을 각각 한번 싹만 사용하여 만.. 더보기
[C++]백준 17070번: 파이프 옮기기 1 문제 https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 문제이해 첫째 줄에 N을 입력한다. 두번째 줄부터 N x N 크기의 집의 상태를 입력한다. 빈칸은 0이며 벽은 1로 입력한다. (1, 1), (1, 2)에 위치해 있는 파이프를 (N, N)까지 이동시키는 방법의 수를 구해 출력한다. 이 문제에서 주의해야 할 점은 현재 파이프의 방향에 따라 파이프를 옮길 수 있는 방법이 정해져있다는 것이다. 파이프가 가질 수 있는 모양.. 더보기
[C++]백준 2178번: 미로 탐색 문제 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제이해 첫째 줄에 N과 M을 입력합니다. 다음 줄부터 N x M 크기의 미로를 입력합니다. 단 각각의 수들은 붙어서 입력됩니다. 미로의 (1, 1)에서 (N, M)까지의 최단 경로를 출력합니다. 우선 각각의 수들이 붙어서 입력되기 때문에 문자열로 받아 한글자씩 분리하여 2차원 벡터에 넣으면 됩니다. 미로의 (1, 1)에서 (N, M)으로 가는 최단경로를 찾는 문제이기 때문에 너비우선탐색(BFS)를 사용하면 쉽게 해결할 수.. 더보기
[C++]백준 7576번: 토마토 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제이해 N과 M을 입력한다. 각 칸에 대한 정보를 담은 N x M 크기의 상자를 입력한다. 모든 토마토가 익을 때까지의 최소 날짜를 출력한다. 다만 모든 토마토가 익지 못하는 상황의 경우 -1을 출력한다. 모든 토마토가 익을 때까지의 최소 날짜를 구하기 위해서는 너비우선탐색(BFS)을 이용하여 문제를 해결해야 한다. 큐(queue)에 현재 익은 토마토들의 정보를 넣고 pop.. 더보기
[C++]백준 1697번: 숨바꼭질 문제 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제이해 수빈이의 위치와 동생의 위치를 입력한다. 수빈이가 동생을 찾을 수 있는 가장 빠른 시간을 출력한다. 수빈이가 동생을 찾기 위해 사용할 수 있는 방법은 다음과 같다. 수빈이의 기존위치 + 1로 이동하고 1초가 지난다. 수빈이의 기존위치 - 1 로 이동하고 1초가 지난다. 수빈이의 기존위치 * 2 로 이동하고 1초가 지난다 수빈이가 이동했던 자리는 다시 갈 필.. 더보기
[C++]백준 2293번: 동전 1 문제 https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제이해 첫째 줄에 n과 k를 입력한다. 두 번째 줄부터 n개의 동전에 대한 가치가 주어진다. n개의 동전으로 k를 만들 수 있는 경우의 수를 출력한다. 이 문제는 n개의 전부다 가치가 다른 동전들을 사용하여 k를 만들어 내는 경우의 수를 출력해야 되는 문제이다. 이 문제를 해결하기 위해서는 다이나믹 프로그래밍을 사용해야 한다. 문제에 나와있는 예시를 통해 설명해 보겠다. 가치가 1인 동전을 .. 더보기
[C++]백준 1932번: 정수 삼각형 문제 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 문제이해 첫째 줄에 삼각형의 높이 n을 입력한다. 두 번째 줄부터 n개의 줄동안 높이가 n인 삼각형을 입력한다. 층마다 선택한 수의 합 중 최댓값을 출력한다. 삼각형의 각 층에서 한개씩의 숫자를 골라 합을 저장하며 마지막 층까지 내려갔을 때 합들 중에서 최댓값을 찾아 출력하면 된다. 각 층에서 나올수있는 합들을 배열에 저장하고 다음 층에서 저장해 놓았던 배열에 전에 했던 것과 마찬가지로 그 층의 수들을 더하는 과정을 반복하면 된다. 다만 이 문제에서 각 층마다 숫.. 더보기
[C++]백준 1522번: 문자열 교환 문제 https://www.acmicpc.net/problem/1522 1522번: 문자열 교환 a와 b로만 이루어진 문자열이 주어질 때, a를 모두 연속으로 만들기 위해서 필요한 교환의 회수를 최소로 하는 프로그램을 작성하시오. 이 문자열은 원형이기 때문에, 처음과 끝은 서로 인접해 www.acmicpc.net 문제이해 첫째 줄에 문자열을 입력한다. 교환 횟수의 최솟값을 출력한다. 문자열은 원형으로 되어있으며 문자열은 a와 b로만 이루어져 있다. a를 모두 연속으로 만든다는 것은 a를 모두 모은다는 것이고 이 말은 b를 모두 모은다는 말과 똑같은 말이다. b를 모두 모으는데 필요한 교환의 최솟값을 구하기 위해서는 b를 최소한으로 교환하는 경우를 찾아야 한다. 문자열을 최소한으로 교환하기 위해서는 이미 .. 더보기

LIST