반응형

Java/백준알고리즘 111

[Java] 백준알고리즘 #2480 주사위 세개

주사위 세 개를 던져 상금을 받는 게임이다. 먼저 3번 조건을 위해 최대값을 저장하는 조건문을 먼저 만든다. int maxdice = 0; if (dice1 > maxdice) { maxdice = dice1; } if (dice2 > maxdice) { maxdice = dice2; } if (dice3 > maxdice) { maxdice = dice3; } 이후 각 조건에 맞춰 상금을 계산하면 완료. 전체 코드는 다음과 같다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int dice1 = sc.nextInt(); int ..

[Java] 백준알고리즘 #2525 오븐 시계

현재 시간에 입력한 분을 더하여 시, 분 형태로 출력하는 문제. 조건문만 잘 사용하면 어렵지 않다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int hour = sc.nextInt(); int min = sc.nextInt(); int req = sc.nextInt(); hour = hour + (req / 60); min = min + (req % 60); if (min > 59) { min -= 60; hour++; } if (hour > 23) { hour -= 24; } System.out.println(hour + "..

[Java] 백준알고리즘 #8741 이진수 합

k자리수 이하의 모든 자연수의 합을 구하는 문제이다. 예를들어 3인 경우 3자리 이하의 이진수는 111(7), 110(6), 101 (5) , 100 (4) , 11 (3) , 10 (2) , 1 (1) 와 같다. 이 수를 모두 더하면 (1+2+3+4+5+6+7) 28이 되므로 이를 다시 이진수로 나타내면 11100 이 된다. 수의 범위가 10만자리까지 해당되므로 결과값으로 상당히 큰 수가 나올 수 있다. 이진법으로 나타낼 때 31자리에 해당하는 값만 해도 21억(int형 최대값) 이므로 정수형으로 수를 표현하기에는 턱없이 부족하다. 정수형에 담아 메모리초과가 나는 예시 import java.util.Scanner; public class Main { public static void main(Strin..

[Java] 백준알고리즘 #10953 A + B - 6

각 케이스의 두 수를 더한 값을 출력하는 문제. 코드는 다음과 같다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); String[] testcase = new String[t]; for (int i = 0; i < t; i++) { testcase[i] = sc.next(); String a[] = new String[2]; a = testcase[i].split(","); int sum = Integer.parseInt(a[0]) + Integer.parseInt(a[1]); System.o..

[Java] 백준알고리즘 # 10101 삼각형 외우기

세 각을 입력받아 어떤 삼각형인지 판단하는 문제이다. 조건문만 잘 활용한다면 간단히 해결할 수 있다. 코드는 다음과 같다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextInt(); int y = sc.nextInt(); int z = sc.nextInt(); if (x == 60 && y == 60 && z == 60) { System.out.println("Equilateral"); } else if (x + y + z == 180) { if (x != y && y != z && z != x) { Sy..

[Java] 백준알고리즘 #9063 대지

간단히 말해 x,y 좌표 위의 점들을 포함하는 가장 작은 사각형의 면적을 구하는 문제이다. 조건에서 동서, 남북으로 평행한 네 변을 가지는 사각형을 구하는 것이라고 했으니 더욱 간단해진다. 좌표 위에서 직사각형의 넓이는 (x2-x1) x (y2-y1) 이 되므로 구슬이 있는 지점들의 최대값을 x2, y2에, 최소값을 x1, y1에 저장하면 된다. 코드를 보면 다음과 같다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] x = new int[n]; int[] y = new int[n]..

[Java] 백준알고리즘 #15894 수학은 체육과목 입니다

정사각형을 이어 붙인 후 도형의 둘레를 구하는 문제. 합쳐진 도형의 상 하 좌 우면을 나눠서 계산하면 간단하다. 빨간 부분 (윗변) 을 이어붙이면 아랫변과 같음을 알 수 있고, 파란부분(우변)을 이어붙이면 층 수와 같음을 알 수 있다. 좌변도 마찬가지이므로 결국 구하고자 하는 값은 가장 아랫부분의 정사각형 수 x 4 가 됨을 알 수 있다. 이제 코드를 작성해보자. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long sum = (long) n * 4; System.out.print(sum);..

[Java] 백준알고리즘 #1094 막대기

막대의 길이를 절반으로 자른 뒤 원하는 수보다 작다면 하나를 버리고, 크다면 작은 것을 반으로 잘라서 원하는 n만큼의 막대를 만드는 문제이다. 먼저 필요한 변수부터 만들어보자 막대기의 개수를 확인해줄 count변수 막대기의 길이를 확인하는 stick 변수 잘라서 모은 막대기의 합을 확인할 sum 변수 이렇게 구성할 수 있겠다. int n = sc.nextInt(); int count = 1; int stick = 64; int sum = stick; sum을 stick으로 초기화 한 이유는 while문을 통해 보도록 하자. 조건을 반복해야 하므로 while문을 사용한다. 이 때의 조건은 sum != n 으로 하자. while(sum != n) { stick = stick/2; if(sum > n) { s..

[Java] 백준알고리즘 #1676 팩토리얼 0의 개수

입력받은 n값으로 n!의 값을 구한 후 뒤에서부터 연속된 0이 몇개 있는지 찾는 문제이다. 가장 먼저 생각나는 방법으로는 팩토리얼 값을 구한 후 차례로 10으로 나누어 나머지가 0이라면 count변수를 증가시켜 0의 개수를 찾는 방법이 있다. public class Back1676 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long fact = 1; int count = 0; for (int i = 1; i 0) { if (fact % 10 == 0) { count++; fact = fact / 10; } else break; } System.out.println(c..

반응형