[백준][Java] 2579번 : 계단 오르기
·
PS/백준
[문제 링크]https://www.acmicpc.net/problem/2579문제 설명계단 오르기 게임은 계단 아래 시점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다.과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다.예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다.1. 계단은 한 번에 한 계단 or 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면 이어서 다음계단이나, 다음다음계단을 밟은 수 있다.2. 연속된 세 개의 계단을 모두 밟아서는 안된다. 단, 시작점은 포함되지 않음3...
[이코테][Java] 못생긴 수
·
PS/이코테
문제 설명못생긴 수란 오직 2, 3, 5만을 소인수로 가지는 수를 의미한다.(즉, 오직 2, 3, 5를 약수로 가지는 합성수)1은 못생긴  수라고 가정하고, 못생긴 수들은 {1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...} 순으로 이어지게 된다. 이 때, n번째 못생긴 수를 찾느 ㄴ프로그램을 작성하세요. 입력조건첫째 줄에 n출력조건n번째 못생긴 수 출력입출력 예시입력예시출력예시101244    문제 풀이다이나믹 프로그래밍 풀이못생긴 수에 각각 2의 배수, 3의 배수, 5의 배수를 곱한 값도 못생긴 수가 된다.예를 들면, 문제에서 1, 2, 3, 5 는 못생긴 수 임을 알 수 있다. 이 때 각 못생긴 수에 2의 배수, 3의 배수, 5의 배수를 구하면 다음과 같다.못생긴 수 배수한 값..
[이코테] 다이나믹 프로그래밍(Dynamic Programming)
·
PS/이코테
다이나믹 프로그래밍이란? 큰 문제를 작은 문제로 쪼개고, 같은 문제라면 한 번씩만 풀어 문제를 효율적으로 해결하는 알고리즘 기법이다.다이나믹 프로그래밍을 구현하는 방법에는 작은 문제를 재귀적으로 호출하는 방식인 Top-Down(하향식)작은 문제부터 하나씩 해결해나가면서 답을 도출하는 방식인 Bottom-Up(상향식)예제 1) 1로 만들기정수 X가 주어지고 다음 연산을 적절히 사용해서 1을 만드려고 할 때, 연산을 사용하는 횟수의 최솟값을 출력하시오.- X가 5로 나누어 떨어지면, 5로 나눈다. - X가 3로 나누어 떨어지면, 3로 나눈다. - X가 2로 나누어 떨어지면, 2로 나눈다. - X에서 1을 뺀다. 문제 해설Bottom-Up 방식 사용문제의 규칙을 찾아보면 다음과 같다.f(1) = 0f(2) =..
[이코테][Java] 정수 삼각형
·
PS/이코테
문제 설명맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하세요.아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 or 대각선 오른쪽에 있는 것 중에서만 선택할 수 있습니다. 입력조건첫째 줄에 삼각형의 크기둘째 줄부터 n+1번째 줄까지 정수 삼각형출력조건합이 최대가 되는 경로에 있는 수의 합입출력 예시입력예시출력예시5 7 3 8 8 1 02 7 4 4 4 5 2 6 54    문제 풀이다이나믹 프로그래밍으로 풀이'금광' 문제와 비슷한 유형의 문제이다.정수삼각형의 수들을 배열에 저장하면, 윗층에서 현재 위치로 내려올 수 있는 경우는 2가지가 있다.(왼쪽 위 or 바로 위)이 두가지 경우 중에서 더..
[이코테][Java] 금광
·
PS/이코테
문제 설명n × m 크기의 금광의 각 칸에 특정한 크기의 금이 들어있고, 채굴자는 첫 번째 열부터 출발하여 금을 캐기 시작합니다.- 맨 처음에는  첫 번째 열의 어느 행에서든 출발할 수 있다.- 이후에 m번에 걸쳐서 매번 오른쪽 위, 오른쪽, 오른쪽 아래 3가지 중 하나의 위치로 이동해야 한다.위의 규칙을 가지고 이동할 때, 결과적으로 채굴자가 얻을 수 있는 금의 최대 크기를 출력하는 프로그램을 작성하세요. 입력조건첫째 줄에 테스트 케이스 T매 테스트 케이스의 첫째 줄에 n과 m매 테스트 케이스의 둘째 줄에 n × m개의 금의 개수출력조건테스트 케이스마다 채굴자가 얻을 수 있는 금의 최대 크기입출력 예시  입력예시출력예시23 41 3 3 2 2 1 4 1 0 6 4 74 41 3 1 4 2 2 4 1 5..
[이코테][Java] 경쟁적 전염
·
PS/이코테
[문제링크]https://www.acmicpc.net/problem/18405문제 설명하나의 칸의 크기가 1 ×1인 N × N 크기의 시험관 안에 바이러스가 존재할 수 있고, 모든 바이러스는 1 ~ k번까지의 바이러스 종류 중 하나이다. - 시험관에 존재하는 모든 바이러스는 1초마다 상, 하, 좌, 우의 방향으로 증식한다.- 매 초마다 번호가 낮은 종류의 바이러스부터 먼저 증식한다.- 이미 어떠한 바이러스가 존재한다면 그곳에는 다른 바이러스가 들어갈 수 없다.S초가 지난 후에 (X, Y)에 존재하는 바이러스의 종류를 출력하세요. 만약 해당 위치에 바이러스가 존재하지 않는다면 0 출력 입력조건첫째 줄에 시험관의 크기 N, 바이러스 종류의 개수 K둘째줄 ~ N+1번째 줄 까지 시험관 안에 바이러스 정보N+2..