전체 글

전체 글

    [백준/JAVA] 반복문을 사용하지 않는 2292번 벌집

    벌집이 형성되는 규칙에 따라 벌집의 위치를 구하는 문제 https://www.acmicpc.net/problem/2292 1. 문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 2. 문제 접근 입력의 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다..

    [백준/JAVA] 2292번 벌집

    벌집이 형성되는 규칙에 따라 벌집의 위치를 구하는 문제 https://www.acmicpc.net/problem/2292 1. 문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 2. 문제 접근 1) 정수 N을 입력받는다. 2) N에서 1을 빼고 조건에 맞을 때까지 반복문을 진행하며 지나가는 방의 개수를 1씩 늘린다. 핵심! N에서 1을 뺐을 경우 첫째 ..

    [백준/JAVA] 9020번 골드바흐의 추측

    소수 응용 문제 2 https://www.acmicpc.net/problem/9020 1. 문제 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이다. ..

    [백준/JAVA] 11653번 소인수분해

    N을 소인수분해하는 문제 https://www.acmicpc.net/problem/11653 1. 문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 2. 문제 접근 1) 정수 N을 입력받는다. 2) StringBuilder에 가장 작은 소수부터 시작하여 소인수들을 append한다. 소수가 아닌 것들은 그것보다 작은 소수에 의해서 이미 나누어지기 때문에 자동적으로 반복문에서 통과된다. 3. 코드 import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; public class Main { public static void main(String[] args) throws IOExcep..

    [백준/JAVA] 1978번 소수 찾기

    2부터 X-1까지 모두 나눠서 X가 소수인지 판별하는 문제 1 https://www.acmicpc.net/problem/1978 1. 문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 2. 문제 접근 1) 첫 줄에 수의 개수 N을 입력받는다. 2) N만큼 반복하며 주어진 수들을 받아서 이 중 소수의 개수를 계산하여 출력한다. 소수 찾기 1) 미리 boolean형 배열에 소수인 것은 false, 소수가 아닌 것은 true로 계산하여 값을 넣는다. 2) 에라토스테네스의 체 알고리즘을 사용하여 소수를 구한다. 참고 https://velog.io/@agfalcon/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4..

    [백준/JAVA] 2775번 부녀회장이 될테야

    층과 거주자 수의 규칙을 찾는 문제 https://www.acmicpc.net/problem/2775 1. 문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. ..

    [백준/JAVA] 2839번 설탕 배달

    5와 3을 최소 횟수로 합하여 N을 만드는 문제 https://www.acmicpc.net/problem/2839 1. 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 2..

    [백준/JAVA] 10757번 큰 수 A+B

    큰 수의 합 구하기 https://www.acmicpc.net/problem/10757 1. 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 2. 문제 접근 두 개의 수를 입력받는다. 두 개의 수의 합을 출력한다. -> 단, 두 수의 범위는 0 < A,B < 1010000 핵심! 자바에서 정수 자료형 중 가장 메모리가 큰 것은 long이다. 16byte로 1010000 의 범위의 수를 저장하지 못한다. 고로, 문자열로 합을 구해보자. 아래의 코드는 문자열의 문자 하나하나 접근하며 합을 구하는 방법이다. 입력 받은 두 수를 정수의 배열에 저장해두고 배열 인덱스 단위로 합을 구하여도 된다!! 3. 코드 import java.io.IOException; import java...