반응형

Java 116

[Java] 백준알고리즘 #5073 삼각형과 세 변

삼각형의 세 변을 입력받고 어떤 삼각형인지 출력하는 문제이다. 먼저 전체 코드를 보면 다음과 같다. import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); while (true) { int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); if (a == b && b == c) { if (a == 0) break; System.out.println("Equilateral"); } else if (a + b

[Java] 백준알고리즘 #9506 약수들의 합

입력받은 n의 약수들의 합을 구해 n이 완전수인지 아닌지 판별하는 문제. 입력 개수가 정해져있지 않으므로 while문을 사용해 n을 입력받는다. n이 -1이라면 break문을 이용해 빠져나가게 한다. int sum = 1; String result = n + " = 1"; 약수들의 합을 저장할 sum 변수와 결과를 출력할 result 변수이다. 출력에서처럼 + 기호를 출력하기 위해 sum은 1로 초기화하고, result변수에는 = 1 이라는 값으로 초기화했다. 1은 모든 수의 약수가 되기 때문에 반드시 포함될 것이기 때문. 이후 for문을 이용해 2부터 n / 2 까지 반복한다 (반복횟수를 줄이기 위해) 나머지가 0이면 약수라는 점을 이용해 약수를 sum 변수에 차례로 더해주고, result 변수에도 +..

[Java] 백준알고리즘 #2501 약수 구하기

입력받은 수 n의 약수들 중에서 k번째로 작은 수를 구하는 문제. 먼저 결과를 출력할 result변수를 선언해 0으로 초기화한다 (존재하지 않는 경우 0 출력을 위해) 그리고 1부터 n까지 반복하며 전체 약수를 구한다. 약수는 n을 어떤 수로 나누었을 때 나머지가 0인 것이므로 간단히 구할 수 있다. 이때, count변수를 두어 약수를 발견할 때 마다 하나씩 증가시켜 주자. 이 count가 k와 같아지는 지점에서, count를 result변수에 넣어서 출력해주면 끝. 전체 코드는 다음과 같다. import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System...

[Java] 백준알고리즘 #2903 중앙 이동 알고리즘

정사각형이 중복 되니 마니 이래저래 말이 많지만 결국에는 점의 수를 구하는 문제. 규칙을 보면 초기상태 4 1번시행 9 2번시행 25 ... 인 것을 알 수 있다. 이것은 정사각형의 변의 중앙에 점을 찍는 방식이므로 한 변에 있는 점을 안다면 모든 점을 알 수 있다. 한 변의 점을 기준으로 초기상태 2 1번시행 3 2번시행 5 ... 이 된다. 이것을 공식화한다면 초기상태 2 1번시행 : 2 + 1 = 3 2번시행 : 3 + 2 = 5 3번시행 : 5 + 4 = 9 ... n번시행 : (n - 1번째 시행값) + (n - 1번째 실행값 - 1) 이 됨을 알 수 있다. 이제 n번 시행 후 나온 큰 정사각형에서 한 변에 있는 점의 개수를 알았으니, 이를 제곱해주면 모든 점의 수를 구할 수 있다. 이를 코드로..

[Java] 백준알고리즘 #2720 세탁소 사장 동혁

거스름돈으로 줄 동전의 개수를 구하는 문제. 아주 간단하다. 가장 큰 단위의 동전 부터 차례차례 나누어 몫을 출력하면 된다. 예를 들어 예제의 124 같은 경우 124를 25로 나눔 => 몫 4 나머지 24 24를 10으로 나눔 => 몫 2 나머지 4 4를 5로 나눔 => 몫 0 나머지 4 4를 1로 나눔 => 몫 1 나머지 0 이 몫을 차례대로 출력하면 4 2 0 1이 되겠다. 전체 코드는 다음과 같다. import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); int q = 25; int d = 10;..

[Java] 백준알고리즘 #11005 진법 변환 2

앞선 진법 변환 문제를 반대로 해 놓은 문제이다. 2023.10.05 - [Java/백준알고리즘] - [Java] 백준알고리즘 #2745 진법 변환 예시로 31이라는 수를 2진법으로 변환한다고 하면 31을 2로 나눈다 => 몫 15 나머지 1 15를 2로 나눈다 => 몫 7 나머지 1 7을 2로 나눈다 => 몫 3 나머지 1 3을 2로 나눈다 => 몫 1 나머지 1 1을 2로 나눈다 => 몫 0 나머지 1 즉 몫이 0이 될 때 까지 n으로 나누고, 나머지들을 역순으로 나열하면 n진법 수를 구할 수 있다. 전체 코드는 다음과 같다. import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc ..

[Java] 백준알고리즘 #2745 진법 변환

입력받은 수 b진법수 n을 10진법으로 출력하는 문제. 위 예제에서 보듯이 ZZZZZ 라는 36진법 수가 있다고 하면 이를 10진수로 바꾸는 과정은 다음과 같다. 먼저 Z라는 수는 36진법에서 35번째 수이다. 5번째 Z : 35 x 1 = 35 4번째 Z : 35 x 36 = 1,260 3번째 Z : 35 x 36^2 = 45,360 2번째 Z : 35 x 36^3 = 1,632,960 1번째 Z : 35 x 36^4 = 58,786,560 이를 모두 더하면 60,466,175 라는 값이 나오게 된다. 이를 공식화하게 되면 n번째 수 : 해당수 x 1 n-1번째 수 : 해당수 x 진법 n-2번째 수 : 해당수 x 진법^2 ... 이 될 것이다. 이를 반복문으로 나타내면 다음과 같다 int tmp = 1..

[Java] 백준알고리즘 #2563 색종이

100 x 100 크기의 도화지에 10 x 10 인 색종이를 붙인 후, 색종이가 붙어 있는 면적을 구하는 문제이다. 먼저 5 x 5 크기의 도화지가 있다고 해보자. 여기에 3 x 3 색종이를 붙여보자. 이를 2차원 배열이라고 하고, 색종이가 붙어 있지 않는 곳은 0, 색종이가 붙어 있는 곳이 1이라고 한다면 다음과 같다. 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 사각형의 면적은 가로 x 세로 이므로, 색종이가 붙어 있는 곳의 면적은 9가된다. 위 2차원 배열에서 1인 부분의 수를 세어보면 똑같이 9가 되는 것을 알 수 있다. 따라서 이 문제는 100 x 100 크기의 2차원 배열을 만든 후, 색종이가 붙는 위치에 값을 1로 변환시켜 주면 간단히 구할 수 있..

[Java] 백준알고리즘 #10798 세로읽기

5줄을 입력받아 세로로 읽어 출력하는 문제. abc de f gh ijk 이라면 adfgibehjck 가 되겠다. 각 문자들은 줄 단위로 입력되므로 nextLine()함수를 통해 입력받아 이를 이차원 배열에 저장한다. String[] ary = new String[5]; char[][] result = new char[15][5]; for (int i = 0; i < 5; i++) { ary[i] = sc.nextLine(); for (int j = 0; j < ary[i].length(); j++) { result[j][i] = ary[i].charAt(j); } } 이때 이차원배열은 15행 5열 으로 한다. (입력받은 문자의 최대가 5행 15열이기 때문) for (int i = 0; i < 15; i..

[Java] 백준알고리즘 #2566 최댓값

이차원 배열을 입력받고 최댓값과 그 최댓값이 위치한 행, 열의 값을 구하는 문제이다. int[][] ary = new int[9][9]; int max = -1; int row = 0; int col = 0; 위와 같이 9x9 크기의 배열을 만들고, 최댓값을 저장할 max, 행을 저장할 row, 열을 저장할 col 변수를 선언한뒤, 반복문을 통해 81개의 문자를 입력받으면서 최댓값과 비교하여 크다면 max에 해당 수를 넣으면 된다. 다만 여기서 주의할 점은 최댓값을 저장할 max 함수를 -1로 초기화 한 것인데, 이는 모든 수가 0인 경우를 대비하기 위함이다. 전체 코드는 다음과 같다. import java.util.Scanner; public class Main { public static void m..

반응형