본문 바로가기

코딩테스트 준비577

[백준] 2166번 - 다각형의 면적 [Java] https://www.acmicpc.net/problem/2166 1.  아이디어 다각형의 면적은 신발끈 공식을 통해 간단하게 구할 수 있다.오목 다각형일 경우 면적 계산이 잘못될 수 있어서 신발끈 공식이 가장 적합한 것으로 판단했다.2. 문제풀이 신발끈 공식만 적용하면 바로 해결할 수 있고 계산한 값의 절반의 절댓값이 면적인 점에 주의해야 한다. 추가로 좌표의 곱을 구하는 과정에서 int형 오버플로우가 발생할 수 있는 점에 주의해야 한다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br .. 2024. 12. 2.
[백준] 4153번 - 직각삼각형 [Java] https://www.acmicpc.net/problem/4153 1.  아이디어 피타고라스의 정리를 활용해서 직각삼각형인지 판단하면 간단하게 해결할 수 있다.2. 문제풀이 직각삼각형인지 boolean 타입으로 반환하는 메서드와 삼항 연산자를 통해 구현했다.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)); BufferedWriter bw = new BufferedWriter(ne.. 2024. 12. 2.
[백준] 10569번 - 다면체 [Java] https://www.acmicpc.net/problem/10569 1.  아이디어 문제에서 주어진 오일러 지표를 계산해서 출력만 하면 되는 간단한 문제로 조건에 맞게 풀이하면 된다.2. 문제풀이 BufferedWriter와 StringBuilder를 활용해서 간단하게 구현했다.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)); BufferedWriter bw = new Buffe.. 2024. 12. 2.
[백준] 15829번 - Hashing [Java] https://www.acmicpc.net/problem/15829 1.  아이디어 해시 함수를 직접 구현하는 문제로 힌트의 예제를 참고하면 간단한 반복문으로 구현할 수 있다.2. 문제풀이 해시 값을 구하는 과정에서 int형 오버플로우가 발생하게 돼서 long 타입으로 선언하고 매번 모듈러 연산을 해주는 방식으로 구현했다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int L = Integer.parseIn.. 2024. 12. 2.
[백준] 2559번 - 수열 [Java] https://www.acmicpc.net/problem/2559 1.  아이디어 연속된 날짜에서 온도의 합의 최댓값을 구해야하는 문제로 구간의 길이가 고정되어 있어서 누적합을 활용해서 해결했다.2. 문제풀이 누적합 배열을 만들고 순회를 하며 온도의 최댓값을 갱신해나가며 정답을 찾으면 간단하게 해결할 수 있다.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)); StringToken.. 2024. 12. 2.
[백준] 1439번 - 뒤집기 [Java] https://www.acmicpc.net/problem/1439 1.  아이디어 뒤집기의 최소 횟수는 0 묶음만 1로 뒤집거나 1묶음만 0으로 뒤집으면 된다.굳이 0으로 뒤집었다 1로 뒤집었다를 반복하지 않아도 돼서 간단하게 해결할 수 있다.2. 문제풀이 주어진 입력을 0으로 한번, 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(System.in)); .. 2024. 12. 2.
[백준] 2217번 - 로프 [Java] https://www.acmicpc.net/problem/2217 1.  아이디어 특정 로프가 버틸 수 있는 최대 중량에 대해 해당 로프보다 버틸 수 있는 최대 중량이 큰 로프는 해당 중량을 버틸 수 있으므로 로프를 버틸 수 있는 중량으로 정렬한 후 특정 로프가 버틸 수 있는 최대 중량과 해당 로프보다 버틸 수 있는 최대 중량이 큰 로프의 수를 곱해서 로프들로 버틸 수 있는 최대 중량을 구한다.2. 문제풀이 정렬 이후 물체의 최대 중량을 갱신하며 찾아나가기만 하면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { B.. 2024. 12. 2.
[백준] 1541번 - 잃어버린 괄호 [Java] https://www.acmicpc.net/problem/1541 1.  아이디어 뺄셈 기호 사이의 수를 먼저 더하고 빼는게 최소값이 된다는 점을 활용한다.2. 문제풀이 수와 덧셈 기호로 이루어진 문자열을 파싱해서 합을 구하는 sum 메서드를 먼저 만들었다. 이후 뺄셈 기호로 주어진 입력을 파싱하고 첫 토큰의 합에서 나머지 토큰들의 합을 빼주면 된다.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.i.. 2024. 12. 2.
[백준] 10430번 - 나머지 [Java] https://www.acmicpc.net/problem/10430 1.  아이디어 모듈러 연산의 특징에 대해 가볍게 알려주는 문제로 풀이 자체는 조건대로 출력만 하면 된다.2. 문제풀이 문제 조건에 맞게 출력하면 된다.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)); StringTokenizer st = new StringTokenizer(br.readLine()); .. 2024. 12. 2.
[백준] 11399번 - ATM [Java] https://www.acmicpc.net/problem/11399 1.  아이디어 인출하는데 걸리는 시간이 짧은 사람부터 인출을 하는게 전체 인출시간의 합이 최소가 된다는 점을 활용한다.2. 문제풀이 앞에 인출한 사람이 걸린 시간만큼 뒷사람들이 영향을 받으므로 인출하는데 걸리는 시간이 짧은 사람부터 인출하도록 정렬을 해준다. 이후 정렬된 배열의 누적합 배열을 구하면 각 사람이 인출하는데 걸리는 시간을 구할 수 있고, 누적합 배열의 총합이 인출하는데 걸리는 전체 시간이 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { .. 2024. 12. 2.
[백준] 1026번 - 보물 [Java] https://www.acmicpc.net/problem/1026 1.  아이디어 S의 최솟값은 작은 수와 큰 수의 곱의 합으로 이루어졌을 때라는 점을 활용한다.2. 문제풀이 두 배열에서 가장 큰 수와 가장 작은 수를 매칭시키고 다음으로 큰 수와 다음으로 작은 수를 매칭시키는 과정을 반복하면 되므로 두 배열을 정렬한 후 인덱스를 하나는 정방향, 하나는 역방향으로 순회하며 곱해서 최솟값을 구해준다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new .. 2024. 12. 2.
[백준] 11047번 - 동전 0 [Java] https://www.acmicpc.net/problem/11047 1.  아이디어 필요한 동전이 최소가 되려면 가장 단위가 큰 동전부터 최대로 사용하는 걸 반복하면 된다.2. 문제풀이 동전의 가치가 오름차순으로 주어지는데 나중에 개수를 셀 때 향상된 for문으로 계산하기 위해 내림차순이 되게 배열에 저장한다. 이후 배열을 순회하며 단위가 큰 동전을 최대한 사용하고 동전을 사용한만큼 남은 금액을 갱신해주는 과정을 반복하면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new B.. 2024. 12. 2.