전체 글
-
[그리디] 1이 될 때까지Algorithm/유형별 문제 풀기 2021. 6. 26. 10:18
문제 설명 어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다. 단, 두 번째 연산은 N이 K로 나누어떨어질 때만 선택 가능하다. 1. N에서 1을 뺀다. 2. N을 K로 나눈다. N이 1이 될 때까지 수행해야 하는 최소 횟수를 구하는 프로그램 작성하기 1. 사용 알고리즘 그리디 2. 문제 해결 아이디어 수행 횟수가 최소가 되기 위해서는 N을 K로 최대한 많이 나누면 된다. N에서 1을 빼는 것보다 숫자가 더 빠르게 줄어들기 때문이다. 3. 코드 구현 방식1) if-else를 통해 조건에 따라 다르게 수행되도록 하기 import java.util.Scanner; public class q3 { public static void main(String[] args)..
-
[그리디] 숫자 카드 게임Algorithm/유형별 문제 풀기 2021. 6. 25. 18:45
문제 설명 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 1장을 뽑는 게임이다. 단, 주어진 게임의 룰을 지키며 카드를 뽑아야 한다. 게임 룰 : 1. 뽑고자 하는 카드가 포함되어 있는 행을 선택함 2. 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 함 3. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 함 1. 사용 알고리즘 그리디 2. 문제 해결 아이디어 주어진 2차원 배열의 각 행마다 최소값을 찾고, 최소값들 중 가장 큰 값이 속한 행을 선택해 해당 값을 반환해주면 된다. 3. 코드 구현방식1) 각 행을 오름차순 정렬시킨 후, 각 행의 첫 번째 원소들..
-
[그리디] 큰 수의 법칙Algorithm/유형별 문제 풀기 2021. 6. 25. 17:08
1. 사용 알고리즘 그리디 2. 문제 해결 아이디어 주어진 배열의 값 중 가장 큰 수 2개를 선택해 조건에 맞게 더해주면 가장 큰 수를 만들 수 있다. 3. 코드 구현방식) 반복되는 수열을 사용한다. 가장 큰 수를 만들기 위해서는 최대값을 가장 많이 더해줘야 하므로 K값에 따른 반복되는 수열의 크기는 K+1이 된다. 따라서 더해지는 횟수 M을 (K+1)로 나눈 몫이 수열이 반복되는 횟수가 된다. 추가로 M이 (K+1)로 나누어 떨어지지 않는 경우가 존재하므로 이때는 M을 (K+1)로 나눈 나머지만큼 최대값이 추가로 더해진다. 최대값이 더해지는 횟수 = M/(K+1) * K + M%(K+1) import java.util.Scanner; import java.util.Arrays; class q1 { pu..
-
[Java] 예외(Exception)Programming/Java 2021. 5. 19. 03:03
예외 클래스 Error와 Exception은 모두 Throwable 클래스를 상속받음 위의 그림을 통해 Exception 2가지 종류에 대해 알 수 있음 1. Checked Exception -> 일반(컴파일 체크) 예외 예외 처리 코드가 없으면 컴파일 오류 발생 예외 확인 시점 : 컴파일 단계 2. Unchecked Exception -> 실행 예외 예외처리 코드 생략해도 컴파일 됨 예외 확인 시점 : 실행 단계 RuntimeException 클래스의 하위 클래스들 예외 처리 1. Checked Exception 1-1. 예외 처리 전 import java.io.FileReader; public class CheckedException { public static void main(String[] ar..