본문 바로가기

백준

(54)
[백준] 균형잡힌 세상 (4949번) 코드 힌트:입력 처리사용자는 여러 줄의 문자열을 입력합니다. 입력된 문자열이 .으로 시작하지 않을 때까지 반복적으로 처리합니다.input.replaceAll("[a-zA-Z.]*", "")와 input.replaceAll("\\s++", "")를 통해 괄호 외의 문자와 공백을 제거한 후 문자열을 처리합니다.스택을 이용한 괄호 짝 검사각 문자열을 순회하며 열린 괄호 ( 또는 [는 스택에 추가합니다.닫힌 괄호 ) 또는 ]를 만날 경우, 스택의 최상단에 있는 열린 괄호와 짝이 맞는지 확인합니다.짝이 맞으면 스택에서 제거하고, 그렇지 않으면 isAble을 false로 설정해 잘못된 괄호 짝임을 표시합니다.결과 출력문자열 순회가 끝난 후, isAble이 true이고 스택이 비어있으면 괄호가 올바르게 닫혔으므로 "..
[백준] 보물 (1026번) 코드 힌트목표:두 배열의 원소를 재배열하여, 각 원소끼리 곱한 값들의 합이 최소가 되도록 계산하는 문제입니다.정렬 방식:arr1은 오름차순으로 정렬하고, arr2는 내림차순으로 곱셈을 진행합니다. 이렇게 하면, 큰 값과 작은 값이 곱해져 전체 곱셈 결과를 최소화할 수 있습니다.곱셈과 합산:arr1의 작은 값과 arr2의 큰 값을 곱해가며, 각 곱셈 결과를 result 변수에 누적하여 최소 값을 얻습니다.배열 크기와 정렬:배열의 크기 n을 입력받고, 두 배열을 각각 정수 배열로 변환한 후, 정렬을 수행한 뒤 대응하는 원소들을 곱합니다.정답은 더보기 클릭더보기import java.util.*;class Main { public static void main(String[] args) { i..
[백준] 별 찍기 - 8 코드 힌트출력되는 행과 열:별의 출력은 총 n*2 - 1개의 행과 n*2개의 열로 이루어져 있습니다.각 행에서 양쪽 끝에 별이 출력되며, 별의 개수는 첫 번째 행에서 마지막 행으로 갈수록 점점 줄어듭니다.별이 증가하는 구간:별이 증가하는 구간은 첫 번째 행부터 n-1번째 행까지입니다.이때는 i가 작을수록 별의 개수가 많고, i >= j 또는 n*2 - i - 1 별이 감소하는 구간:별이 감소하는 구간은 n번째 행 이후부터 시작하여 마지막 행까지입니다.i >= n인 경우, i j일 때 별을 출력합니다.공백 처리:별을 출력하지 않는 부분은 공백을 출력하여 별의 형태를 만들기 위한 영역입니다.조건에 맞지 않는 부분에는 공백(" ")을 출력합니다. 정답은 더보기 클릭더보기import java.util.*;cl..
[백준] 북극곰은 괄호를 찢어 (25918번) 코드 힌트스택을 활용한 괄호 균형 확인:문자열을 순회하면서 스택을 사용해 괄호의 짝을 맞춥니다.열린 괄호는 스택에 추가하고, 닫힌 괄호가 스택의 top 괄호와 짝이 맞으면 스택에서 제거합니다.스택의 최대 크기 추적:스택의 현재 크기를 기록하여 괄호가 중첩된 최대 깊이를 추적합니다.문자열을 순회하면서 스택의 최대 크기를 업데이트합니다.유효성 검사:문자열 순회 후 스택이 비어있지 않다면 올바른 괄호 문자열이 아니며, 결과를 -1로 설정합니다.스택의 깊이 계산:각 단계에서 스택의 크기를 계산하여 최대값을 업데이트합니다. 정답은 더보기 클릭더보기import java.util.*;class Main { public static void main(String[] args) { Scanner in ..
[백준] 다음 소수 (4134번) 코드 힌트목표:주어진 숫자 target에서 시작해, 가장 가까운 소수를 찾는 문제입니다.입력으로 주어진 숫자들 각각에 대해 처리합니다.소수 판별:n이 소수인지 확인하기 위해, 2부터 Math.sqrt(n)까지의 범위에서 나누어 떨어지는지 검사합니다.이 과정에서 n이 1보다 작거나 2 또는 3일 때의 특별한 경우를 처리합니다.소수 찾기:target이 소수가 아닌 경우, target을 1씩 증가시키며 소수를 찾습니다.소수를 찾으면 현재 target 값을 출력합니다.효율적인 소수 판별:Math.sqrt(n)을 사용하여 제곱근까지만 검사하여 소수 판별을 최적화합니다.반복문을 사용하여 소수를 찾을 때, target을 증가시켜가며 검사합니다.  정답은 더보기 클릭더보기import java.util.*;class M..
[백준] 가로수 (2485번) 코드 힌트문제의 핵심:주어진 배열의 인접한 두 원소 간의 차이를 계산하여, 이들 차이의 최대 공약수(GCD)를 구합니다.이 GCD를 사용하여 배열의 원소들 사이의 가능한 모든 값을 체크하고, 누락된 값의 수를 계산합니다.차이 배열 계산:배열의 인접한 두 수의 차이를 계산하여 새로운 배열에 저장합니다.예를 들어, 배열이 arr이라면 인접한 두 원소의 차이를 계산하여 diffArr에 저장합니다.최대 공약수(GCD) 구하기:차이 배열의 모든 요소의 GCD를 구합니다.GCD 계산에 필요한 두 매개변수를 사용하여 반복적으로 최대 공약수를 구합니다.결과 계산:GCD를 사용하여 배열의 첫 번째 원소부터 시작해 GCD만큼 증가시켜 가며, 배열의 원소와 일치하는지 확인합니다.일치하지 않는 값의 수를 카운트하여 결과를 도..
[백준] 이항 계수 1 (11050번) 코드 힌트입력 처리:두 개의 숫자 n과 m이 입력으로 주어집니다. 이 숫자들은 nCm 조합을 계산하기 위해 사용됩니다.nCm은 n개의 요소 중 m개의 요소를 선택하는 조합의 수를 의미합니다.조합 계산:조합을 계산하기 위해 두 가지 반복문을 사용합니다.첫 번째 반복문은 n부터 n-m+1까지 곱해 n! / (n-m)!를 계산합니다.두 번째 반복문은 m!을 계산해 첫 번째 계산 결과를 나누어 최종 조합 값을 구합니다.출력 처리:최종적으로 계산된 조합 값을 출력합니다.BufferedWriter를 사용해 출력을 버퍼링하고, 모든 출력을 한 번에 처리합니다. 정답은 더보기 클릭더보기import java.io.*;public class Main { public static void main(String[] ar..
[백준] 분해합 (2231번) 코드 힌트분해합의 개념:분해합이란 어떤 숫자 i와 그 숫자의 각 자릿수를 모두 더한 값을 의미합니다.예를 들어, 숫자 198의 분해합은 198 + 1 + 9 + 8 = 216입니다.생성자 찾기:주어진 n의 분해합을 만들어낼 수 있는 가장 작은 숫자 i를 찾는 것이 목표입니다.i를 1부터 n-1까지 검사하여, 분해합이 n과 일치하면 해당 숫자를 반환합니다.자릿수 합 계산:각 숫자 i의 자릿수 합을 계산하기 위해, 숫자를 10으로 나누어가며 각 자릿수를 더합니다.이렇게 계산한 자릿수 합과 i를 더해 n과 비교합니다.결과 반환:만약 n의 분해합을 만들어낼 수 있는 숫자 i가 없다면 0을 반환합니다.  정답은 더보기 클릭더보기import java.io.*;public class Main { public s..