본문 바로가기
반응형

백준58

백준 10610. 30 / 배수판정법 🅰 백준 10610. 30 ✏️ 문제 풀이 자리수가 10^5개 이다. 100000의 정수가 아니라 00000000000000000000000000000000000000000000000000 개의 숫자가 들어간다는 말이다. int나 long 형으로 처리할 수 없기 때문에 문자열로 처리해야 한다. 30의 배수가 되기 위해서는 자리수의 합이 3의 배수여야 하고, 마지막 자리가 0이여야 한다. ans에 정렬하여 출력하려고 했으나 숫자 자리수가 10^5이므로 int,long의 자리수를 훌쩍 넘기므로 배열or 문자열로 출력해야 했다. 오름차순으로 배열이 정렬되어 있으므로, 배열의 역 순서대로 출력을 해주었다. ✏️ 소스코드 package greedy; import java.util.*; import java.io... 2021. 8. 13.
백준 1080. 행렬 0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오. 행렬을 변환하는 연산은 어떤 3×3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 → 1, 1 → 0) 이 문제가 그리디 알고리즘인 이유 Q1. 3 * 3행렬로 가장 많이 변경할 수 있는 것이 최적의 해가 아닌가요? 많이 변경함으로써 전체적으로 변경해야할 수가 줄어든 거니깐요. → 뒤집는 연산의 특성상 많이 변경하는 것은 의미가 없습니다. 따라서 최적의 해에 가까워진다고 볼 수 없습니다. Q2. 이게 왜 최적의 해가 되는 건가요? 그냥 순서대로 뒤집어 보다가 단순히 맞추는 것이 아닌가요? 그것이 어떻게 최저횟수가 되는지 모르겠습니다. → 이 문제의.. 2021. 8. 13.
[Java] 백준 단계별 풀기 2 (1330번, 9498번, 2753번, 14681번, 2884번) 1330번_ import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub int A,B; Scanner scan = new Scanner(System.in); A = scan.nextInt(); B = scan.nextInt(); if(A>B) { System.out.println(">"); } else if (A=90) { System.out.println("A"); } else if (A>=80) { System.out.println("B"); } else if(A>=70) { System.out.println("C"); } else if(A>=.. 2021. 8. 12.
[Java] 백준 단계별 풀기 1 (10712번, 1000번, 1001번, 10998번, 10869번, 10430번, 2588번) *Java는 코드 제출할 때 class 명을 Main으로 설정하고 제출해야 컴파일 에러가 안난다. 10712번_ public class Main { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("|\\_/|"); System.out.println("|q p| /}"); System.out.println("( 0 )\"\"\"\\"); System.out.println("|\"^\"` |"); System.out.println("||_/=\\\\__|"); } } 1000번_ import java.util.Scanner; public class Main { public static .. 2021. 8. 12.