본문 바로가기
반응형

Algorithm14

백준 알고리즘 2447번 별 찍기 문제풀이 - 자바(JAVA) ⚡️문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다. ⚡️입력 첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k < 8이다. ⚡️출력 첫째 줄부터 N번째 줄까지 별을 출력한다. 📌 예제 입력 1 복사 27 📌 예제 출력 1 복사 **********.. 2022. 6. 1.
백준 알고리즘 9020번 골드바흐의 추측 문제풀이 - 자바(JAVA) ⚡️문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다. 2보다 큰 .. 2022. 6. 1.
분할 정복법(Divide & Conquer)과 합병 정렬(Merge Sort) 분할 정복법(Divide & Conquer)이란 분할 정복법은 주어진 문제를 작은 단위로 분할(Divide)하여 작은 단위부터 정복(Conquer)하는 방식입니다. 일반적으로 재귀식을 사용해 큰 문제를 최대한 작게 쪼개고, 이 부분들을 하나씩 해결해 나갑니다. 순차적 방법보다 비교적 성능이 좋으며 대표적으로 O(n log n)의 성능을 갖는 합병정렬과 퀵정렬이 있습니다. 분할 정복법 설계전략 분할 정복법의 설계전략은 3단계의 하향식(top-down) 해법을 사용합니다. 1. 분할 해결하기 쉽게 큰 문제를 여러 개의 작은 부분으로 분할합니다. 2. 정복 분할된 문제들을 각각 해결(정복)하여 부분 해를 구합니다. 3. 통합 필요하다면 부분 해를 통합하여 전체 해를 구합니다. 이러한 방식으로 이루어지는 분할 .. 2022. 2. 22.
백준 알고리즘 2675번 문제풀이 - 자바(JAVA) 문제 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 각 테스트 케이스에 대해 P를 출력한다. 결과 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Baek2675 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRea.. 2021. 12. 27.
백준 알고리즘 11720번 문제풀이 - 자바(JAVA) 문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력 입력으로 주어진 숫자 N개의 합을 출력한다. 결과 코드 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int count = Integer.parseInt(br.readLine()); String num = br.readLine(); in.. 2021. 12. 26.
백준 알고리즘 11654번 아스키코드 변환 - 자바(JAVA) 문제 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. 입력 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다. 출력 입력으로 주어진 글자의 아스키 코드 값을 출력한다. 결과 java11보다 java8로 컴파일 하는 게 더 빠른 속도를 보여준다. 속도를 많이 줄이긴 했지만 뭔 짓을 해도 76ms 이하로는 힘들다. 코드 import java.io.*; public class Main { public static void main(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in).. 2021. 12. 26.
백준 알고리즘 1065번 한수 구하기 - 자바(JAVA) 문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. 결과 코드 import java.util.Scanner; public class Main { public static void hanSu(int n){ int count = 0; if(n 2021. 12. 24.
2차원 배열을 이용해 모래시계 모양 출력하기 - 자바(JAVA) 문제 2차원 배열을 이용하여 모래시계 출력하기 입력 홀수개의 배열 크기를 입력하세요. 7 출력 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 결과 코드 public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("홀수개의 배열 크기를 입력하세요."); int num = sc.nextInt(); char arr[][]=new char[num][num]; int left = 0; int right = num-1; for(int i=0;i 2021. 12. 23.
백준 알고리즘 4673번 문제풀이 - 자바(JAVA) 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라.. 2021. 12. 22.
반응형

오픈 채팅