목록알고리즘/백준 (341)
어흥
문제 링크: https://www.acmicpc.net/problem/16197 16197번: 두 동전 N×M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1×1크기의 정사각형 칸으로 나누어져 있고, 각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, 두 동전의 위치는 다르다. 버튼은 "왼쪽", "오른쪽", "위", "아래"와 같이 4가지가 있다. 버튼을 누르면 두 동전이 버튼에 쓰여 있는 방향으로 동시에 이동하게 된다. 동전이 이동하려는 칸이 벽이면, 동전은 이동하지 않는다. 동전이 이동하려는 방향에 칸이 없 www.acmicpc.net 1. 주의할 점 - 문제에 적힌대로만 정확히 구현하면 된다 - 최대 4^10의 경우의 수가 나오며, 이후 계산까지 포함해..
문제 링크: https://www.acmicpc.net/problem/11578 11578번: 팀원 모집 3번 학생과 4번 학생을 선택하면 1번부터 5번까지 모든 문제를 풀 수 있는 팀을 만들 수 있다. 1번, 2번, 4번 학생을 선택해도 모든 문제를 다 풀 수 있지만 팀원의 수가 3명이라 답이 될 수 없다. www.acmicpc.net 1. 주의할 점 - 팀원을 생성할 수 없는 경우 -1을 출력한다 - 2^N -1(N이 최대 10)만큼 만들 수 있는 팀원 경우의수를 모두 구할수 있어야 한다(2^N 이상으로 구하면 어떤 경우에서 시간초과가 발생할 수 있다) 2. 구현 - 팀원 1명, 2명, 3명,....N명일 때 만들 수 있는 조합의 수를 따진다. 전부 구해도 nC1 + nC2 + nC3 +... +nC..
문제 링크: https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다. 셋째 줄에는 지울 노드의 번호가 주어진다. www.acmicpc.net 1. 주의할 점 - For문을 최대한 덜 사용하도록 한다. - 배단 Vector를 통해 자식의 정보를 저장한다 - Boolean 배열을 사용하여 해당 Node가 삭제되었는지 확인한다 2. 구현 - 큐를 사용하여 지우려는 Node를 큐에 삽입하고 해당 Node의 Erased 배열값을 True로 설정한다. - 큐에서 Pop을 통해 얻은 N..
문제 링크: https://www.acmicpc.net/problem/15989 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 1+3 (3+1) 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 1. 주의할 점 - DP로 풀 경우 끝에 어떤 숫자가 왔는지 기억해야 한다. 여기서는 1,2,3 총 3개의 숫자를 사용하므로 결과적으로 10000 X3짜리 배열을 사용하면 된다. - DP를 사용하지 않..
문제 링크: https://www.acmicpc.net/problem/1072 1072번: 게임 각 줄에 X와 Y가 주어진다. X는 1,000,000,000보다 작거나 같은 자연수이고, Y는 0보다 크거나 같고, X보다 작거나 같은 자연수이다. www.acmicpc.net 1. 주의할 점 - 2가지 방식으로 풀었는데, 이 중에서 이분탐색을 사용할 경우 High에 충분히 큰값을 할당해야한다. - 소수점은 버린다고 했으므로 Double을 사용하지 않고 Long Long을 사용해 소수점 이하는 자동으로 버리도록 한다. 2. 구현 - 첫 번째 방법: 이분탐색 Low: 0, High: 2,000,000,000 으로 할당해준다. High의 경우 충분히 큰 값을 할당해야 하는데 얼만큼 큰 값을 할당해야 할지 확실하지..
문제 링크: https://www.acmicpc.net/problem/12786 12786번: INHA SUIT 평소 Iron man을 좋아하던 규환이는 Iron man Suit에 영감을 받아 Inha Suit를 만들게 되었다. 규환이는 Suit를 입고 모든 나무의 높이가 20m인 숲을 지나서 인하대로 놀러가려고 한다. 하지만 Inha Suit는 Iron man Suit와 다르게 위아래로만 움직일 수 있다는 큰 결점을 갖고 있었고 그마저도 최대 20m까지 올라갈 수 있었다. 이동 기능은 가만히 있는 O기능, 위로 1m 이동하는 A기능, 현재 높이만큼 위로 이동하는 www.acmicpc.net 1. 주의할 점 - 구멍이 있는 나무의 기준으로 왼쪽을 살펴보도록 한다 - 우선순위큐를 사용할 경우 추가적인 조건..
문제 링크: https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net 1. 주의할 점 - 주사위의 전개도를 기준으로 해당 면이 배열 Dice의 몇번째 index와 짝을 이루는지 정한다...
문제 링크: https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 문제 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 번갈아가면서 등장한다. 아래 그림은 길이가 14미터이고 높이가 5미터인 동굴이다. (예제 그림) 이 개똥벌레는 장애물을 피하지 않는다. 자신이 지나갈 구간을 정한 다음 일직선으로 지나가면서 만나는 모든 장애물을 파괴한다. 위의 그림에서 4번째 구간으로 개똥벌레 www.acmicpc.net 1. 주의할 점 - 높이의 최대가 50만이여서 높이만큼 크기의 2차배열을 생성하지 않고 1차 배열 2개로 해결하려고 한다 -..