수학103 [백준] 16486번 - 운동장 한 바퀴 [Java] https://www.acmicpc.net/problem/16486 1. 아이디어 둘레의 길이는 원의 둘레와 직사각형 윗변과 아랫변의 길이의 합으로 구할 수 있다.2. 문제풀이 아이디어 그대로 구현했다.3. 코드 import java.io.*;public class Main { private static final double PI = 3.141592; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int d1 = Integer.parseInt(br.readLine()); .. 2025. 3. 20. [백준] 16479번 - 컵라면 측정하기 [Java] https://www.acmicpc.net/problem/16479 1. 아이디어 등변 사다리꼴의 높이의 제곱은 피타고라스 정리를 활용하면 간단하게 구할 수 있다.밑변이 더 짧으므로 (윗변의 길이 - 밑변의 길이) / 2를 밑변, K를 가장 긴변으로 하는 직각삼각형의 높이를 구하면 된다.2. 문제풀이 Math.pow 메서드를 활용해서 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)).. 2025. 3. 18. [백준] 1252번 - 이진수 덧셈 [Java] https://www.acmicpc.net/problem/1252 1. 아이디어 이진수의 덧셈을 하는 문제로 이진수의 길이가 최대 80이어서 int나 long 같은 기본 타입으로는 처리하기 어렵다.배열을 활용해 직접 이진수의 덧셈을 구하는 방법과 큰 수 연산에 활용할 수 있는 BigInteger 클래스의 메서드를 활용하는 방법 2가지로 해결했다.2. 문제풀이 배열을 활용할 경우 덧셈으로 자릿수가 넘어가는 것을 고려해서 두 수 중 길이가 더 긴 수의 길이보다 1 크게 잡았다. 일단 덧셈을 수행한 후 뒤에서부터 순회하며 자릿수 이동을 구현하고 앞의 0을 제외하고 출력하도록 했고 출력 결과가 0인 경우에 대한 예외처리를 했다.3. 코드 import java.io.*;import java.util.*;publ.. 2025. 3. 14. [백준] 2089번 - -2진수 [Java] https://www.acmicpc.net/problem/2089 1. 아이디어 음수로 진법 변환은 양수로 진법 변환과 기본 원리는 동일한데 나머지가 항상 양수가 되도록 조절만 해주면 된다.2. 문제풀이 진법 변환을 위해 몫과 나머지를 구하는 과정에서 나머지가 음수가 되면 몫을 하나 더 크게 잡고 나머지를 양수로 만드는 과정을 반복하면 된다. 0이 입력으로 주어질 수 있음에 주의해야 한다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Syst.. 2025. 3. 12. [백준] 30987번 - 하루 피부과 [Java] https://www.acmicpc.net/problem/30987 1. 아이디어 2차 함수의 정적분을 구현하는 문제로 정적분에서 상수가 소거되므로 상수항을 제외한 부정적분에 적분 구간을 입력하면 값이 나오도록 calculate 메서드를 활용했다.2. 문제풀이 2차 함수와 1차 함수의 차는 계수 차로 계산하면 되고 이후 적분값을 메서드로 구하는 방법으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(.. 2025. 3. 10. [백준] 2108번 - 통계학 [Java] https://www.acmicpc.net/problem/2108 1. 아이디어 산술평균은 Math.round 메서드로 반올림을 하는 방식으로, 중앙값은 정렬을 활용해서, 최빈값은 카운팅 배열로, 범위는 정렬을 활용해서 구할 수 있다.2. 문제풀이 입력 단계에서 수들을 배열로 입력받으면서 합과 카운팅 배열을 작성했다. 이후 배열을 정렬해서 중앙값과 범위를 구하고 합으로 산술평균을 구하고, 카운팅 배열로 최빈값을 찾는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final int MAX = 4000; public static void main(String[] args) throws I.. 2025. 2. 19. [백준] 18110번 - solved.ac [Java] https://www.acmicpc.net/problem/18110 1. 아이디어 Math.round 메서드로 반올림을 수행하는 걸 활용하면 간단하게 해결할 수 있다.2. 문제풀이 주어진 점수들을 정렬한 후 절사평균을 위한 15%에 해당하는 인원수를 계산 후 인덱스를 활용해 70% 인원의 점수만 더했다. 이후 절사평균만 출력하면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); .. 2025. 2. 15. [백준] 2477번 - 참외밭 [Java] https://www.acmicpc.net/problem/2477 1. 아이디어 6개의 변이 반시계 방향으로 주어진다. 참외밭의 넓이를 큰 직사각형에서 작은 직사각형을 빼서 구한다고 했을 때 가장 긴변은 반드시 큰 직사각형에 포함된다. 가장 긴변에서 왼쪽 또는 오른쪽 변 중 더 긴변이 나머지 큰 직사각형을 이루는 변이 되는 점을 활용해서 해결했다.2. 문제풀이 6개의 변을 배열에 저장한 후 모듈러 연산으로 인덱스를 원형 배열처럼 활용해서 큰 직사각형을 이루는 두 변과 작은 직사각형을 이루는 두 변을 구했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws .. 2025. 2. 14. [백준] 2417번 - 정수 제곱근 [Java] https://www.acmicpc.net/problem/2417 1. 아이디어 제곱값이 N보다 크거나 같은 가장 작은 정수를 찾는 문제로 Lower Bound 이분 탐색으로 해결했다.2. 문제풀이 가능한 q의 범위를 0부터 Math.sqrt(N) + 1로 설정해서 제곱이 N 이상인 수를 찾는 이분 탐색을 적용했다. 부동 소수점 이슈로 바로 적용하는 방식은 동작이 안되는 테스트 케이스가 많아서 q의 상한을 미리 정하고 돌렸다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new .. 2025. 2. 13. [백준] 1790번 - 수 이어 쓰기 2 [Java] https://www.acmicpc.net/problem/1790 1. 아이디어 N의 크기에 비하면 메모리 크기가 작아서 진짜 수를 문자열로 이어 쓰는 방식으로는 해결할 수 없다.(아마)출력할 K번째 자리수가 실제로 어떤 수에 포함되어있는지를 구하는 방식으로 해결했다.2. 문제풀이 1부터 9까지는 1자리, 10부터 99까지는 2자리 이렇게 수가 커지면 자리수도 점차 커지며 커지는 순간은 10의 거듭제곱이 되는 순간이다.이를 활용해 현재 수와 현재 수의 자리수를 가지고 K에서 현재 수의 자리수를 빼는 과정을 반복해서 더 빼면 K가 음수가 되기 전까지 반복한다. 그러면 현재 수에서 K번째 위치의 수를 구해서 정답을 알아낼 수 있다.3. 코드 import java.io.*;import java.util.*;.. 2025. 2. 7. [백준] 26099번 - 설탕 배달 2 [Java] https://www.acmicpc.net/problem/26099 1. 아이디어 이전 설탕 배달 문제에서 N이 훨씬 커진 문제로 단순한 순회로는 해결할 수 없다.([코딩테스트 준비/백준] - [백준] 2839번 - 설탕 배달 [Java])15키로는 3키로 봉지 5개 또는 5키로 봉지 3개처럼 한 가지 종류의 봉지만으로 만들 수 있다. 따라서 최소 개수의 봉지를 사용해서 정확히 N키로를 만들 때 3키로 봉지는 4개 이상 필요하지 않다는 점을 활용했다.2. 문제풀이 정답에서 필요한 3키로 봉지의 수는 0개 ~ 4개이다. 따라서 0개 ~ 4개의 3키로 봉지를 사용해서 정확히 N키로를 만들 수 있는지보면 되고 이는 몫과 나머지 연산으로 구현했다.3. 코드 import java.io.*;public class.. 2025. 2. 6. [백준] 2839번 - 설탕 배달 [Java] https://www.acmicpc.net/problem/2839 1. 아이디어 5키로 봉지를 최대한 많이 사용해야 봉지의 개수가 최소가 된다. 2중 for문을 활용해 봉지의 조합을 찾고 찾는 순간 바로 종료할 수 있도록 인덱스를 설정하는 방식으로 해결했다.2. 문제풀이 바깥 for문은 5키로 봉지의 개수, 안쪽 for문은 3키로 봉지의 개수에 대해 순회하며 역순으로 순회해서 5키로 봉지가 최대일 때 첫번째 값이 나오도록 했다. 값을 찾으면 바로 종료하도록 라벨링을 적용하는 방식으로 구현했다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { Buffer.. 2025. 2. 6. 이전 1 2 3 4 ··· 9 다음