본문 바로가기

728x90

전체 글

[C++]백준 18185번: 라면 사기 (Small) 문제 https://www.acmicpc.net/problem/18185 18185번: 라면 사기 (Small) 라면매니아 교준이네 집 주변에는 N개의 라면 공장이 있다. 각 공장은 1번부터 N번까지 차례대로 번호가 부여되어 있다. 교준이는 i번 공장에서 정확하게 Ai개의 라면을 구매하고자 한다(1 ≤ i www.acmicpc.net 문제이해 라면 공장의 수인 N을 입력받고 i번 공장에서 구매할 라면의 수를 공백을 두고 입력한다(1 ≤ i ≤ N). 출력으로 교준이가 필요한 최소 금액을 출력한다. 교준이가 라면을 구매하는 규칙을 보자면, i번째 공장에서 라면 한 개를 구매하는 가격은 3원 i번째 공장과 i+1번째 공장에서 라면을 한개씩 구매할 때 총가격은 5원 i번째 공장과 i+1번째 공장과 i+2공장에.. 더보기
[C++]백준 1182번: 부분수열의 합 문제 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제이해 첫째 줄에 정수의 개수와 합으로써 원하는 값을 입력한다. 두 번째 줄에는 정수의 개수만큼의 수를 입력한다. 출력으로 부분 수열의 합이 원하는 값이랑 똑같았던 경우가 몇 번인지 출력한다. 수에 딱히 규칙성도 없고 무작위의 수중에서 무작위 수만큼을 골라 원하는 값이 나오는지 확인해야 하기 때문에 브루트포스 알고리즘을 사용하여야 한다. 브루트포스 알고리.. 더보기
[C++]백준 2644번: 촌수계산 문제 https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 문제이해 가족 구성원 수와 관계를 알고싶은 두 가족 구성원의 번호 입력한다. 그 다음으로 가족구성원 사이의 관계의 수를 입력하고 관계의 수만큼 가족 구성원들 간의 관계를 입력한다. 출력으로 두 가족 구성원이 몇촌인지를 나타낸다. 만약 두 가족 구성원이 서로 관계가 없을 경우 -1을 출력한다. 어떤 자식에 대해서 부모는 반드시 한명이여야 하며 어떤 부모에 대해서 자식의 수는.. 더보기
[C++]백준 10816번: 숫자 카드 2 문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0 www.acmicpc.net 문제이해 처음 입력으로 N(1 ≤ N ≤ 500,000)이 주어지고 N번 동안 상근이 카드를 입력합니다. 다음 입력으로 M(1 ≤ M ≤ 500,000)이 주어지고 M번 동안 확인할 카드를 입력합니다. 출력으로 확인할 카드들을 상근이가 얼마나 가지고 있는지 확인하여 출력합니다. 문제해결 숫자 카드에 적혀있는 수의 범위가 -10,000,000보다 크거나 같고.. 더보기
[C++]백준 14891번: 톱니바퀴 문제 https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 문제이해 우선 입력으로 4개의 톱니바퀴의 톱니 극을 받고 이후 회전 횟수와 회전 기어, 방향을 입력 받습니다. 각각의 회전에 대한 변화를 구현해야 됩니다. 출력은 생각보다 간단하게 각 톱니바퀴의 0번째 인덱스의 값만 이용해 계산하면 됩니다. 문제해결 struct gears { vector magnet; gears* leftGear; gears* rightGear; int way; void.. 더보기
[C++]백준 2579번: 계단 오르기 문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제이해 계단의 개수와 각 계단의 점수를 입력으로 받고 정해진 규칙에 따라서 가장 점수를 많이 얻을 수 있는 방법을 구하여 출력한다. 문제해결 다이나믹 프로그래밍(DP)를 제대로 알지 못해서 재귀로 풀려고 시도를 했지만 시간초과가 나오게되었다. 다이나믹프로그래밍(DP)를 통해 풀어야 시간초과가 해결되다는 것을 재귀로 하고 나서야 깨달았다. DP는 복잡한 문제의 큰 부분을 작은 부분으로 나누어 해결하여 이.. 더보기
[C++]백준 2485번: 가로수 문제 https://www.acmicpc.net/problem/2485 2485번: 가로수 첫째 줄에는 이미 심어져 있는 가로수의 수를 나타내는 하나의 정수 N이 주어진다(3 ≤ N ≤ 100,000). 둘째 줄부터 N개의 줄에는 각 줄마다 심어져 있는 가로수의 위치가 양의 정수로 주어지며, 가 www.acmicpc.net 문제 이해 가로수들이 직선의 도로 한편에 심어져 있고 추가로 가로수를 심어 모든 가로수의 간격이 일정하게 되도록 하려고 한다. 이때 최소한으로 가로수를 심으려고 하는데 그 때의 가로수의 갯수를 출력해야 한다. 문제를 해결하기 위해서는 가로수 사이의 간격들을 구하고 모든 가로수 사이 간격들의 최대 공약수를 구해야 한다. 문제 해결 가로수들 사이의 간격을 side 벡터에 저장함. side.. 더보기

LIST