본문 바로가기

분류 전체보기154

[백준] 18312번: 시각 (Java) 1. 문제설명00시 00분 00초부터 N시 59분 59초까지 모든 시각 중에서 K가 하나라도 포함되는 시간들의 수를 구하는 문제이다.시간 제한: 1초메모리 제한: 256MB 2. 접근 방식⇒ 완전탐색을 사용하여 N시 59분 59초까지 모든 시간을 고려한다.3중 for문을 사용해 N시 59분 59초까지 모든 시간의 경우의 수를 고려한다.모든 시간의 각 자리수에 3이 있으면 count를 증가시킨다. 3. 최종 코드import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader.. 2024. 8. 7.
[백준] 15721번: 번데기 (Java) 1. 문제설명n-1 회차일 때 ‘뻔 – 데기 – 뻔 – 데기 – 뻔(x n번) – 데기(x n번)’ 문장으로 진행되는 번데기 게임이 있다.플레이어는 원을 반시계 방향으로 돌아 계속 진행할 수 있다.T번째로 ‘뻔’ 또는 ‘데기’를 외치는 사람이 원에서 몇 번째 사람인지 구하는 문제이다.시간 제한: 1초메모리 제한: 128MB 2. 접근 방식무한 루프(while)를 사용해 게임을 진행한다.각 라운드마다 "뻔 – 데기 – 뻔 – 데기" 패턴을 먼저 처리한다.다음으로 “뻔”을 `round+1` 번, “데기”를 `round+1` 번 반복한다.매번 “뻔” 또는 “데기”의 `count`를 증가시키고, T번째 발생을 체크한다.원형으로 앉은 것을 고려해 사람 번호를 `person % A` 로 계산한다. 3. 틀린 이유 .. 2024. 8. 6.
[백준] 2231번: 분해합 (Java) 1. 문제설명어떤 자연수 M이 있을 때 M과 M을 이루는 각 자리수의 합을 분해합 N이라고 한다. M은 N의 생성자라고 한다. 자연수 M이 주어졌을 때, N의 가장 작은 생성자를 구하는 문제이다.시간 제한: 2초메모리 제한: 192MB 2. 접근 방식=> 완전탐색을 이용해 1부터 시작하여 N의 가장 작은 생성자를 찾는다.while 문을 이용해 1부터 분해합(`sum`)을 구한다.첫 번째 while 문 종료 조건:`sum`이 N이면 `result`에 해당 숫자를 저장하고 종료해당 숫자가 N이 되면 종료 (생성자를 찾을 수 없기 때문에 `result`는 0이 됨) 3. 최종 코드import java.io.*;public class Main { public static void main(String[] .. 2024. 8. 6.
[백준] 2798번: 블랙잭 (Java) 1. 문제설명변형된 블랙책 규칙(양의 정수가 쓰여 있는 N장의 카드가 있을 때 플레이어는 N장의 카드 중에서 3장을 골라 이 카드의 합이 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다.)으로 N장의 카드에 써져 있는 숫자가 주어졌을 때, 조건을 만족하는 카드 3장의 합을 구하는 문제이다.시간 제한: 1초메모리 제한: 128MB 2. 접근 방식⇒ 완전탐색을 이용하여 모든 경우의 카드 3장의 합을 구한다.카드를 배열에 저장하고, 3중 for문을 이용하여 모든 경우의 카드 3장의 합을 구한다.카드 3장의 합을 구할 때 M을 넘지 않으면서 M에 최대한 가까운 값을 저장한다. 3. 최종 코드import java.io.*;import java.util.*;public class Main { public.. 2024. 8. 6.
[백준] 4779번: 칸토어 집합 (Java) 1. 문제설명주어진 n에 대해 “-”가 3^n이 있는 문자열을 생성하고, 모든 선의 길이가 1일 될 때까지 문자열을 3등분하여 가운데 문자열을 공백으로 만든다.마지막 문자열의 결과를 출력하는 문제이다.시간 제한: 1초메모리 제한: 128MB 2. 접근 방식문자열을 3등분하고 모든 선이 1이 될 때까지 재귀 호출하는 함수를 사용한다.cantor 함수검사하려는 시작 인덱스(`s`)와 문자열 길이(`len`)를 매개변수로 받는다.`len`이 1이면 종료한다.`len`을 3으로 나눈 `div`를 구해, `s+div ~ s+div*2`에 해당하는 부분(2번째 부분)을 공백으로 변경한다.1번째, 3번째 부분을 재귀 호출한다. 3. 최종 코드import java.io.BufferedReader;import java... 2024. 8. 6.
[백준] 25501번: 재귀의 귀재 (Java) 1. 문제설명문제에서 주어진 팰린드롬(앞에서부터 읽었을 때와 뒤에서부터 읽었을 때가 같은 문자열)을 판별하는 isPalindrome 함수와 recursion 함수를 이용하여, 주어진 문자열에 대해 팰린드롬의 여부와 recursion 함수의 호출 횟수를 출력하는 문제이다.시간 제한: 2초메모리 제한: 1024MB 2. 접근 방식문제에서 주어진 isPalindrome, recursion 함수를 자바 코드로 수정한다.isPalindrome 함수recursion 함수를 호출하여 팰린드롬 여부를 검사하는 함수이다.문자열과 시작인덱스, 끝 인덱스를 인자로 recursion 함수를 호출한다.recursion 함수문자열이 팰린드롬인지 재귀적으로 확인하는 함수이다.왼쪽 인덱스가 오른쪽 인덱스보다 크거나 같으면 1을 반환.. 2024. 8. 5.
[백준] 10870번: 피보나치 수 5 (Java) 1. 문제설명n이 주어졌을 때, n번째 피보나치 수를 구하는 문제이다.시간 제한: 1초메모리 제한: 256MB 2. 접근 방식재귀 방법을 사용한다.피보나치 메서드합을 구한 두 개의 값을 매개변수로 받는다.두 개의 합을 구하고 저장한 뒤, 구한 합과 두 번째 매개 변수로 재귀 호출한다.n번째 피보나치 수를 구한 경우 종료한다.단, n이 0이면 0을 출력, 1이면 1을 출력한다. 그 외의 숫자는 피보나치 메서드를 호출한다. 3. 올바른 접근 방식 및 해결 방식재귀 방법을 사용해 피보나치 수를 구한다.n이 0과 1일 경우는 fibonacci 메서드를 호출하면 에러가 발생하기 때문에 따로 체크해주어야 한다. 4. 최종 코드import java.io.BufferedReader;import java.io.IOExc.. 2024. 8. 5.
반응형