문제 문제접근 방법 해당 문제는 포도주 잔의 개수 n을 입력받고 n개의 포도잔에 들어있는 포도주 양을 입력받았을 때 최대로 마실 수 있는 포도주의 양을 출력하는 프로그램을 작성하는 문제이다. 단, 포도주 잔 선택 시 그 잔은 다 마셔야 하고 연속으로 3잔 마실 수 없다는 조건을 고려해서 문제를 해결해야 한다.해당 문제를 보고 처음 생각은 마신다와 안 마신 다를 구분해 이차원 배열로 선언해 DP로 문제를 접근해야겠다고 생각했다.예를 들어 dp [n][0]는 마지막 행위가 안 마신다, dp [n][1]은 마지막 행위가 마신다로 구분하여 코드를 작성하는 것이다.하지만 해당 접근 방식의 문제점은 연속으로 3잔 마시지 못하게 구분하는 것이 어렵다는 것이다.dp [n][0]=dp [n-1][1];dp [n..
문제본 문제는 테스트 케이스의 개수인 T를 입력 받고 단어를 입력 받은 뒤 각 단어마다 뒤집어서출력하는 프로그램을 작성하는 문제이다. 처음에 문제를 접하고서 split를 이용하여 공백을 기준으로 문자열을 나누고 charAt로 문자하나씩 역으로 출력해야겠다생각하고 코드를 작성했다. import java.util.Scanner;public class Main{ public static void main(String args[]){ Scanner s=new Scanner(System.in); int n=s.nextInt(); s.nextLine(); for(int i=0;i=0;j--){ System.out.pri..
문제본 문제는 앞서 풀어본 백준 1929번 소수 구하기에서 사용해본 에라토스테네스의 체 알고리즘을 응용하면 쉽게 해결가능한 문제였다. 다만 차이가 있다면 1929문제는 문제 이름 그대로 소수 구하기이지만 본문제는 소수를 포함해 에라토스테네스의 체 알고리즘이 동작하는 순서대로 지워 K번째 지워지는 수를 구하는 문제이다. https://hmkang32180116.tistory.com/9 [문제 풀이] 백준 1929번 소수 구하기 JAVA백준 1929번 소수 구하기 문제는 자연수 M과 N을 입력 받고 M~N에 존재하는 소수를 모두 출력하는코드를 작성하는 문제이다. 처음 접근은 기본 소수 판별법으로 3~16이 주어졌다면 각각 1~3, 1~16까지hmkang32180116.tistory.com앞서 1929번 소수..
이문제는 a와 b가 주어졌을 때 최소 공배수를 구하는 프로그램을 작성하는 문제이다.최소공배수란 두 수에 서로 공통으로 존재하는 배수 중 가장 작은 수를 의미하는데 이 문제를 보고 처음에 접근한 방식은 소인수분해하고 더 이상 나누어 떨어지지 않는다면 모두 곱해서 구하는 방식으로 접근했다. import java.util.Scanner;public class Main{ public static void main(String args[]){ Scanner s=new Scanner(System.in); int n=s.nextInt(); for(int i=0;i하지만 해당 코드는 if문의 조건들이 특정 숫자일때는 틀리게 나오는 불확실한 코드였다. 그래서 최소공배수를 구하..
문제본 문제는 정수 N을 입력받았을 때 N의 소인수분해 결과를 출력하는 프로그램을 작성하는 문제이다.처음 접근 방식은 입력받은 N을 2로 나누다가 나누어 떨어지지 않으면 3으로 증가시켜서 다시 나누는 방식을반복하면 가능할 것 같아 그렇게 접근하였다. 처음에 시간초과가 나와서 당황했지만조건문을 너무 어렵게 꼬아서 작성한게 문제였고 조건문을 수정하여 문제를 해결하였다. import java.util.*;public class Main{ public static void main(String args[]){ Scanner s=new Scanner(System.in); int n=s.nextInt(); primeFactorization(n); } p..
문제 백준 1978번은 주어진 수 N개 중에서 소수가 몇 개 인지 찾아서 출력하는 프로그램을 작성하는 문제이다.해당 문제를 보고 접근한 방식은 시간 제한이 2 초고 범위가 100 이하이기 때문에이중 for문을 사용하여도 시간 제한이 큰 문제가 되지 않을 것으로 판단하여 아래와 같이 접근해 보았다. 소수의 조건이 본인과 1을 제외한 약수가 없어야 하는 것이므로입력받은 숫자 num [i]를 1~num [i]까지의 숫자로 나누고나머지가 0일 때를 카운트해서 카운트 값이 2가 넘으면 소수로 체크하는 방식을 사용하였다.예를 들어서 1 3 5 7을 입력받았다면 1~1, 1~3,1~5,1~7로 각각의 숫자를 나누고약수가 몇 개인지 판단해서 소수인지 아닌지를 결정하는 것이다. import java.util.*;publ..