본문 바로가기

728x90

백준

(52)
[백준] 별 찍기 - 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..
[백준] 최소공배수 (1934번) 코드 힌트최소 공배수 계산:두 숫자의 최소 공배수(LCM)를 구하기 위해 먼저 최대 공약수(GCD)를 계산합니다.GCD를 이용하여 두 숫자의 LCM을 간단히 구할 수 있습니다.반복 처리:여러 쌍의 숫자에 대해 LCM을 계산해야 하므로, 입력된 쌍의 숫자에 대해 반복적으로 LCM을 계산하고 출력합니다.재귀를 이용한 GCD 계산:유클리드 알고리즘을 사용하여 GCD를 재귀적으로 계산합니다.이 방법은 두 숫자 중 하나가 0이 될 때까지 계속 나머지를 구하는 방식입니다. 정답은 더보기 클릭더보기import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws NumberFormatExcepti..
[백준] 카드2 (2164번) 코드 힌트입출력 최적화:대용량의 데이터를 빠르게 처리하기 위해 BufferedReader와 BufferedWriter를 사용하여 입력과 출력을 처리합니다. 이 방법은 효율적인 입출력 처리를 가능하게 합니다.큐 초기화:1부터 n까지의 숫자를 큐에 넣습니다. 큐는 순서대로 데이터를 처리하는 구조로, 여기서는 카드 게임의 순서를 모방합니다.카드 제거와 이동:큐의 크기가 1이 될 때까지 가장 앞의 카드를 제거한 후, 그 다음 카드를 다시 큐의 뒤에 추가하는 작업을 반복합니다. 이 과정은 마치 카드를 한 장씩 버리고 다음 카드를 다시 큐에 넣는 것과 같습니다.마지막 카드 출력:마지막으로 남은 카드가 최종 결과입니다. 이 값을 출력합니다. 정답은 더보기 클릭더보기import java.io.*;import java...

728x90