목록Algorithm/Java (75)
miinsun
💬 문제 설명 최대 공약수와 최소 공배수를 구하기. 다음 조건을 만족시킨다. 1. 숫자를 차례로 입력받는다. 2. 숫자 집합의 가장 큰 최대 공약수를 구한다. 3. 숫자 집합의 가장 작은 최소 공배수를 구한다. 만약 입력 된 숫자가 0이면 프로그램을 종료한다. 🚫 제한 사항 n은 1,000,000 이하의 자연수 입니다 🔨 입출력 예 입력 - 숫자 집합을 입력한다. 100, 200, 50, 800, 70, 45, 19 출력 - 최소공배수와 최대공약수를 차례로 출력한다. 957600 1 💻 Solution.java 유클리드 호제법을 이용해 문제를 풀이하면 간단하다. 먼저, 유클리드 호제법을 이용해 최대공약수를 구하고 두 수를 곱한 값을 촤대 공약수로 나눠 최소공배수를 구할 수 있다. import java..
💬 문제 설명 N개의 자연수로 이루어진 수열이 주어졌을 때, 그 중에서 가장 길게 증가하는(작은 수에서 큰 수로) 원소들의 집합을 찾는 프로그램을 작성하라. 예를 들어, 원소가 2, 7, 5, 8, 6, 4, 7, 12, 3 이면 가장 길게 증가하도록 원소들을 차례대로 뽑아내면 2, 5, 6, 7, 12를 뽑아내어 길이가 5인 최대 부분 증가수열을 만들 수 있다. 🔨 입출력 예 입력 첫째 줄은 입력되는 데이터의 수 N(3≤N≤1,000, 자연수)를 의미하고, 둘째 줄은 N개의 입력데이터들이 주어진다. 8 5 3 7 8 6 2 9 4 출력 첫 번째 줄에 부분증가수열의 최대 길이를 출력한다. 4 💻 Solution.java dy[i]에는 arr[i]보디 값이 작으면서 max값이 가장 큰 값을 선택한다. ..
💬 문제 설명 철수는 학교에 가는데 개울을 만났습니다. 개울은 N개의 돌로 다리를 만들어 놓았습니다. 철수는 돌 다리를 건널 때 한 번에 한 칸 또는 두 칸씩 건너뛰면서 돌다리를 건널 수 있습니다. 철수가 개울을 건너는 방법은 몇 가지일까요? 🔨 입출력 예 입력 첫째 줄은 돌의 개수인 자연수 N(3≤N≤35)이 주어집니다. 7 출력 첫 번째 줄에 개울을 건너는 방법의 수를 출력합니다. 34 💻 Solution.java 이전 문제 '계단 오르기'와 유사 개울의 시작과 끝을 0, n + 1로 추가하자 리턴 받아야 하는 값은 dy[n + 1] /* 돌다리 건너기 :: Dynamic Programming */ import java.util.*; public class Main { static int [] d..
💬 문제 설명 철수는 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다. 만약 총 4계단을 오른다면 그 방법의 수는 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2 로 5가지이다. 그렇다면 총 N계단일 때 철수가 올라갈 수 있는 방법의 수는 몇 가지인가? 🔨 입출력 예 입력 첫째 줄은 계단의 개수인 자연수 N(3≤N≤35)이 주어집니다. 7 출력 첫 번째 줄에 올라가는 방법의 수를 출력합니다. 21 💻 Solution.java 동적 계획법은 큰 문제를 작은 문제로 분할해서 푸는 것 이 문제에는 피보나치를 적용시킨다 가장 작은 문제인 1번째 계단은 1가지의 방법, 2번째 계단은 2가지의 방법을 갖고 있다 /* 계단 오르기 :: Dynamic Programming */ import ..
💬 문제 설명 현수는 유명한 강연자이다. N개이 기업에서 강연 요청을 해왔다. 각 기업은 D일 안에 와서 강연을 해 주면 M만큼의 강연료를 주기로 했다. 각 기업이 요청한 D와 M를 바탕으로 가장 많을 돈을 벌 수 있도록 강연 스케쥴을 짜야 한다. 단 강연의 특성상 현수는 하루에 하나의 기업에서만 강연을 할 수 있다. 🔨 입출력 예 입력 첫 번째 줄에 자연수 N(1
💬 문제 설명 N×N 크기의 도시지도가 있습니다. 도시지도는 1×1크기의 격자칸으로 이루어져 있습니다. 각 격자칸에는 0은 빈칸, 1은 집, 2는 피자집으로 표현됩니다. 각 격자칸은 좌표(행번호, 열 번호)로 표현됩니다. 행번호는 1번부터 N번까지이고, 열 번호도 1부터 N까지입니다. 도시에는 각 집마다 “피자배달거리”가 았는데 각 집의 피자배달거리는 해당 집과 도시의 존재하는 피자집들과의 거리 중 최소값을 해당 집의 “피자배달거리”라고 한다. 집과 피자집의 피자배달거리는 |x1-x2|+|y1-y2| 이다. 예를 들어, 도시의 지도가 아래와 같다면 (1, 2)에 있는 집과 (2, 3)에 있는 피자집과의 피자 배달 거리는 |1-2| + |2-3| = 2가 된다. 최근 도시가 불경기에 접어들어 우후죽순 생겼..
💬 문제 설명 현수는 다음 달에 결혼을 합니다. 현수는 결혼식 피로연을 장소를 빌려 3일간 쉬지 않고 하려고 합니다. 피로연에 참석하는 친구들 N명의 참석하는 시간정보를 현수는 친구들에게 미리 요구했습니다. 각 친구들은 자신이 몇 시에 도착해서 몇 시에 떠날 것인지 현수에게 알려주었습니다. 현수는 이 정보를 바탕으로 피로연 장소에 동시에 존재하는 최대 인원수를 구하여 그 인원을 수용할 수 있는 장소를 빌리려고 합니다. 여러분이 현수를 도와주세요. 만약 한 친구가 오는 시간 13, 가는시간 15라면 이 친구는 13시 정각에 피로연 장에 존재하는 것이고 15시 정각에는 존재하지 않는다고 가정합니다. 🔨 입출력 예 - 입력 첫째 줄에 피로연에 참석할 인원수 N(5