전체 글 83

백준(BOJ) 2798 : 블랙잭 (자바, JAVA)

2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 설계 카드 게임에서 N장의 카드 중 3장을 고르는 조합을 만들어 M에 가장 가까운 합을 구하는 문제를 해결 조합을 재귀적으로 구성하며, 각 조합의 합이 M을 넘지 않는 범위 내에서 최대값을 찾아 sum에 저장 모든 조합을 탐색한 뒤, 최종적으로 M에 가장 가까운 합인 sum을 출력 구현 코드 // package boj2798; // 패키지 선언 //import java.util.Arrays; // Arrays 클래스 사용을 위한 ..

Problem_Solving 2024.01.04

백준(BOJ) 2231 : 분해합 (자바, JAVA)

2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 설계 분해합은 어떤 수와 그 수의 각 자리수를 모두 더한 값 주어진 N 값에 대하여 1부터 N까지 모든 숫자의 분해합을 구하며, 해당 분해합이 N과 같은 경우 해당 숫자를 출력 가장 작은 값으로부터 시작하기 때문에 최소 조건을 만족 이렇게 출력되는 숫자는 N의 “생성자”. 만약 생성자가 없는 경우 0을 출력. 구현 코드 // package boj2231; // 패키지 선언 import java.util.Scanner; // 사용자 입..

Problem_Solving 2024.01.03

백준(BOJ) 2501 : 약수 구하기 (자바, JAVA)

2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net 설계 주어진 자연수 N의 K번째 약수를 찾는 문제를 해결 N의 모든 약수를 찾아 measure 리스트에 저장 리스트의 크기와 K를 비교하여 K번째 약수가 존재하는지 확인하고, 존재한다면 해당 약수를 출력 만약 K번째 약수가 존재하지 않는다면(즉, 약수의 개수가 K보다 작다면) 0을 출력 구현 코드 // package boj2501; // 패키지 선언 import java.util.ArrayList; // ArrayList 클래스 사용을 위한 import import java.util.List; // List 인터페이스 사용을 위한 im..

Problem_Solving 2024.01.02

백준(BOJ) 6603 : 로또 (자바, JAVA)

6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net 설계 로또 번호들을 입력 받아 가능한 모든 조합을 출력 사용자로부터 입력받은 숫자들 중 6개를 선택하는 모든 조합을 찾아서 출력하는데, 입력이 ‘0’일 때 프로그램을 종료 combinate 함수는 재귀적으로 조합을 생성하며, 각 단계에서 숫자를 선택하거나 선택하지 않는 두 가지 경우를 고려하여 모든 가능한 조합을 탐색 구현 코드 // package boj6603; // 패키지 선언 // import java.util.Arrays; // Arrays 클..

Problem_Solving 2023.12.29

백준(BOJ) 2775 : 부녀회장이 될테야 (자바, JAVA)

2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 설계 주어진 층(k)과 호(n)에 살아야 하는 사람 수를 계산하는 문제를 해결. 각 층의 각 호에 필요한 사람 수는 그 아래 층의 1호부터 해당 호까지 사는 사람들의 합과 같음. 0층의 i호에는 i명이 살고 있으므로, 이 정보를 시작으로 각 층과 호에 대해 필요한 사람 수를 계산해 나감. guess 함수는 이러한 계산 과정을 반복하여 k층 n호에 필요한 사람 수를 구하고 반환. 구현 코드 // package boj2775; // 패키지 선언 import java.util.Arrays; // Arrays..

Problem_Solving 2023.12.29

백준(BOJ) 10973 : 이전 순열 (자바, JAVA)

10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 설계 주어진 순열에서 바로 이전 순열로 변경할 위치를 찾은 후, 해당 위치와 교환할 숫자를 찾아 순열을 변경 순열 변경은 주어진 순열을 뒤에서부터 탐색하여 처음으로 내림차순이 끝나는 위치를 찾고, 그 위치의 바로 앞 숫자와 교환할 숫자를 찾아 순열을 변경하는 방식으로 진행 변경된 순열의 뒷부분은 내림차순으로 정렬하여 이전 순열을 완성 구현 코드 // package boj10973; // 패키지 선언 import java.util.ArrayList; // ArrayList 사용을 위한 import import java.u..

Problem_Solving 2023.12.28

백준(BOJ) 10819 : 차이를 최대로 (자바, JAVA)

10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 설계 주어진 배열 A의 모든 순열을 생성하고, 각 순열에 대해 인접한 원소들의 차이의 절대값의 합을 계산하여 그 합이 최대가 되는 순열을 찾음 순열을 생성하는 permutate 메소드는 재귀적으로 배열의 각 위치에 들어갈 수 있는 숫자를 시도하면서 순열을 완성 각 단계에서 사용되지 않은 숫자를 찾아 순열의 현재 위치에 넣고, 다음 위치를 채우기 위해 다시 자기 자신을 호출 (재귀 호출) 이 과정을 모든 위치가 채워질 때까지 반복하며, 완성된 순열은 permutation 리스트에..

Problem_Solving 2023.12.27

백준(BOJ) 2529 : 부등호 (자바, JAVA)

2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net 설계 주어진 k개의 부등호 문자열을 만족하는 k+1 자리의 수를 찾는 문제를 해결. 각 숫자 위치에 0부터 9까지 가능한 숫자를 대입하면서 부등호 조건을 만족하는지 확인하고, 모든 조건을 만족하는 숫자 배열을 결과 리스트에 추가. 최종적으로 결과 리스트에 저장된 모든 배열을 문자열로 변환하여 숫자를 비교하고, 가능한 최대값과 최소값을 출력. 재귀 함수를 사용하여 가능한 모든 숫자 조합을 탐색하는데, 각 단계마다 사용한 숫자를 체크하고 부등호 조건을 만족하는지 확인. 탐색이 ..

Problem_Solving 2023.12.26

백준(BOJ) 9095 : 1, 2, 3 더하기 (자바, JAVA)

9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 설계 정수 n을 입력 받아, 1, 2, 3의 합으로 n을 만드는 모든 경우의 수를 찾아 문제를 해결. 재귀 함수는 종료 조건에 도달할 때까지 자기 자신을 호출하며 문제의 규모를 점차 줄여 나가는 구조. 재귀적으로 문제를 해결하는 과정에서 n이 0이 될 때마다 하나의 유효한 조합을 찾은 것으로 간주하고 결과를 카운트 재귀 호출은 1, 2, 3을 각각 n에서 빼는 것을 반복하며, 각 단계에서 가능한 모든 경우의 수를 탐색. 구현 코드 // package boj9095; // 패키지 선언 import java.util.Scanner; // Scanner 클래스 임포..

Problem_Solving 2023.12.25

프로그래머스 : 삼각 달팽이 (자바, JAVA)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 좌측하단, 우측, 좌측 상단으로 움직이는 3가지의 움직임 경우의 수를 각기 구현 개수가 정해져 있지 않은 경우이므로, Array 대신 List를 사용하여 구현 get, add, addAll 등 list의 메소드들을 적절히 사용 구현 코드 //package pg68645; // 패키지 선언 import java.util.ArrayList; // ArrayList 사용을 위한 import // import java.util.Arrays; // Arrays 사용을 위한 import import java.uti..

Problem_Solving 2023.12.25