자바 372

[Java] 백준 풀기 11508 - 2+1 세일

자바 백준 11508번 실버 4 https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 문제 보기 분류: 정렬, 그리디 알고리즘 문제 풀기 세 개씩 묶었을때 가장 작은 가격을 제외하고 지불하는 규칙에서 전체 최소 비용을 구하기 위해서는 가격을 정렬하여 제외시킨다. 가격이 정렬된 상태에서 세 개씩 묶을 수 있으면 그 중 가장 작은 가격을 제외하고 누적 합한다. 세 개씩 묶여지지 않은 나머지 가격인 두 개 또는 한 개의 가격은 그대로 합한다. ..

공부하기/백준 2023.08.15

[Java] 백준 풀기 10610 - 30

자바 백준 10610번 실버 4 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 문제 보기 분류: 수학, 그리디 알고리즘, 문자열, 정렬, 정수론 문제 풀기 30의 배수가 가능한지 알아보기 위해서 주어진 숫자의 각 자리를 모두 합한 값이 3의 배수가 되는지 확인하고 0이 하나라도 존재하는지 확인한다. String 타입으로 입력 받은 숫자를 charAt() - '0' 방법을 이용하여 int 타입의 숫자로 변경한다. 0부터 9까지 각 숫자의 개수를 ..

공부하기/백준 2023.08.14

[Java] 백준 풀기 10162 - 전자레인지

자바 백준 10162번 브론즈 3 https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net 문제 보기 분류: 수학, 구현, 그리디 알고리즘 문제 풀기 주어진 요리 시간에서 가장 긴 시간 5분 (300초) 버튼으로 나누어 그 횟수를 정하고 그 나머지 시간을 다음 버튼으로 넘겨준다. 다음 버튼인 1분 (60초) 버튼으로 나누어 그 횟수를 정하고 나머지 시간을 마지막 버튼으로 넘겨준다. 남은 10초 C버튼으로 나누어 그 횟수를 저장한다. A, B, ..

공부하기/백준 2023.08.13

[Java] 백준 풀기 4597 - 패리티

자바 백준 4597번 브론즈 2 https://www.acmicpc.net/problem/4597 4597번: 패리티 입력은 여러 개의 비트 스트링으로 이루어져 있다. 각 비트 스트링은 한 줄로 이루어져 있고, 길이는 1~31비트이다. 또, 비트 스트링의 마지막 문자는 e 또는 o이다. (e: 짝수 패리티, o: 홀수 패리티 www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 1의 개수를 세어서 짝수개인지 홀수개인지 찾고, 각각 마지막 패리티와 비교하여 일치하는지 확인한다. 일치할 경우 마지막 패리티 자리에 `0`으로 교체하여 출력하고 일치하지 않으면 `1`로 교체하여 출력한다. 한 줄로 입력된 문자는 charAt() 함수를 이용하여 parity 및 1을 구분한다. 코드 보기 impo..

공부하기/백준 2023.08.12

[Java] 백준 풀기 3273 - 두 수의 합

자바 백준 3273번 실버 3 https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 문제 보기 분류: 정렬, 투 포인터 문제 풀기 입력된 숫자 수열을 오름차순 정렬을 하고 첫번째 index와 마지막 index를 시작으로 two-pointer technique을 사용하여 두 수의 합을 확인한다. 두 수의 합이 주어진 x와 같으면, 카운트를 늘리고 array의 다음 안쪽 두 수를 확인한다. 만약 두..

공부하기/백준 2023.08.11

[Java] 백준 풀기 21921 - 블로그

자바 백준 21921번 실버 3 https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다 www.acmicpc.net 문제 보기 분류: 누적 합, 슬라이딩 윈도우 문제 풀기 for loop을 이용하여 구간 합을 찾을 경우 `시간초과`가 발생한다. 시간 초과를 해결하기 위해 for loop을 사용하지 않고 다이나믹 프로그램을 이용하여 이미 계산된 날짜별 누적 합에서 필요한 날짜 구간만큼의 index 차이를 통해 결과를 얻는다. 구간마다 총 방문자를 계산하여 최대 방문자를 넘을..

공부하기/백준 2023.08.09

[Java] 백준 풀기 11005 - 진법 변환 2

자바 백준 11005번 브론즈 1 https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 보기 분류: 수학, 구현 문제 풀기 주어진 10진수를 목표 진법으로 나누어 그에 따른 나머지가 10 미만인지 또는 10 이상인지 판별한다. 10 미만일 경우 숫자로 변환하고, 10 이상일 경우 알파벳으로 변환하여 저장한다. 숫자 또는 알파벳 변환은 `char`를 이용한 계산 특성을 이용한다. 코드 보기 import java.util.Scanner; pu..

공부하기/백준 2023.08.08

[Java] 백준 풀기 13222 - Matches

자바 백준 13222번 브론즈 3 https://www.acmicpc.net/problem/13222 13222번: Matches The first line of input contains an integer N (1 ≤ N ≤ 50), the number of matches on the floor, and two integers W and H, the dimensions of the box (1 ≤ W ≤ 100, 1 ≤ H ≤ 100). Each of the following N lines contains a single integer between 1 an www.acmicpc.net 문제 보기 분류: 수학, 기하학, 피타고라스 정리 문제 풀기 직사각형 바닥에서 가능한 최대 길이인 대각선 길이를 계..

공부하기/백준 2023.08.07

[Java] 백준 풀기 16486 - 운동장 한 바퀴

자바 백준 16486번 브론즈 4 https://www.acmicpc.net/problem/16486 16486번: 운동장 한 바퀴 첫째 줄에 d1의 값이 주어진다. 둘째 줄에는 d2의 값이 주어진다. (d1, d2의 값은 100,000 이하의 양의 정수) www.acmicpc.net 문제 보기 분류: 수학, 기하학 문제 풀기 문제에서 주어진 PI 값 3.141592를 적용하여 온전한 원의 둘레를 구하고, 두 개의 직선 구간을 더하여 결과를 출력한다. 코드 보기 import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int d1 = sc.n..

공부하기/백준 2023.08.06

[Java] 백준 풀기 7510 - 고급 수학

자바 백준 7510번 브론즈 3 https://www.acmicpc.net/problem/7510 7510번: 고급 수학 준규는 집을 짓고 있다. 준규는 모든 벽 모양을 직각 삼각형으로 만들려고 한다. 적절히 나무를 잘라 삼각형을 만들었지만, 준규는 각도를 측정할 수 있는 도구를 가지고 있지 않다. 어쩔 수 없 www.acmicpc.net 문제 보기 분류: 수학, 기하학, 피타고라스 정리 문제 풀기 각 테이스마다 숫자 세 개를 array에 입력 받고, 오름차순으로 정렬을 한다. 정렬된 array에서 Math.pow()를 사용하여 세 변의 관계를 계산한다. 피타고라스 정리를 만족할 때와 그렇지 않을때 각각 메시지를 출력한다. 코드 보기 import java.util.Scanner; import java.u..

공부하기/백준 2023.08.05