Loading...
2023. 4. 5. 01:21

[Java]예시문제로 자바 매개변수 탐색 기본기 배우기1

1. parametric search란 무엇인가1 - 합에 대한 탐색 1부터 n까지의 자연수의 합이 100이상인 경우 중 가능한 n의 최솟값을 구하는 프로그램을 작성해보세요. 단, 답은 1에서 30사이라고 가정합니다. 무작정 문제를 푼다면, 1,2,3,...,30 전까지 계속 더해보면서 최초로 합이 100을 넘는 경우, 그 숫자를 return하게 된다. 하지만 다음과 같이 시도해본다면? 1차시도: n = 15 15까지의 합은 120이므로 15는 답의 후보이며, n의 최솟값을 찾기 위해 이러한 합보다 더 작은 합은 1~14중 하나에서 찾을 수 있다. 2차시도: n = 7 7까지의 합은 28이므로, n은 확실히 7보다 커야하며, 8~14를 조사해본다. 3차시도: n = 11 11까지의 합은 66이므로, n은..

[Java]자바 HashMap 문제 풀면서 HashMap 이해력 높이기 1편

1. 매우 큰 범위의 배열이 필요할때 서로 다른 6개의 숫자가 주어진 뒤 끝에 숫자 k가 주어졌을 때, 숫자 k가 몇 번째로 주어졌는지를 판단하는 프로그램을 작성해보세요. 단, 주어지는 숫자의 범위는 -10^9 ~ 10^9 사이입니다. 예를 들어 [-656, 234, 65756344, 7678678, 123123, 567567567] 에서 k가 65756344라면, 3번째로 주어진 숫자이므로 답은 3이 됩니다. 이런 경우 -10^9에서 10^9을 모두 담는 배열을 선언하기에는 메모리가 부족하다 하지만 필요한 숫자는 6개밖에 안된다. 그래서 이럴때 필요한 자료구조가 HashMap HashMap은 (key,value)형태로 데이터를 저장하며, key의 범위는 정의하기 나름이고, 사용되는 메모리 공간이 전체 ..

자바에서 배열의 한 원소로 튜플을 활용하고 싶다면..

1. 문제 양의 정수를 원소로 갖는 길이가 N인 수열이 입력으로 주어졌을 때, 이 수열을 오름차순으로 정렬 했을 때 각각의 위치에 있던 원소가 어느 위치로 이동하는지 출력하는 코드를 작성 2. 풀이 배열을 정렬할때, 배열의 index도 동시에 움직여야하는데, 배열은 index랑 값을 동시에 활용할 수 없으니(동적 배열은 될 것 같기도하고...??) 배열의 값과 index를 동시에 가지는 새로운 클래스를 직접 정의하고 해당 클래스를 원소로 가지는 배열을 정렬하여 각 index가 정렬한 배열에서 어디에 위치하고 있는지 새로운 배열에 저장한 다음에 출력 import java.util.Scanner; import java.util.Arrays; class Tuple implements Comparable { i..

[Java]그리디 알고리즘 - 배열에서 2개씩 짝지을때 합의 최댓값이 최소가 되게할려면

1. 문제 """ 2 * N개의 숫자가 주어졌을 때, 겹치지 않으면서 2개의 원소가 하나의 그룹을 이루도록 하여 총 N개의 그룹을 만드려고 합니다. 적절하게 그룹을 만들어 각 그룹에 있는 원소의 합 중 최댓값이 최소가 되도록 하는 프로그램을 작성해보세요. 예를 들어 N = 2, 주어진 원소가 3, 5, 5, 2 였을 때 그룹을 [5, 5], [3, 2]로 나눈다면 각 그룹에 있는 원소의 합은 순서대로 10, 5 이므로 이 중 최댓값은 10이 됩니다. 만약 그룹을 [3, 5], [5, 2]로 나눈다면 각 그룹에 있는 원소의 합은 순서대로 8, 7 이 되므로 이 중 최댓값은 8이 되며 이보다 최댓값을 더 작게 만들 수는 없습니다. """ 2. 풀이 항상 문제부터 똑바로 이해해야돼 2N개의 숫자를 N개 N개씩..

자바 초보부터 B형까지 - 자바에서 정렬을 하는 기본적인 방법들 -

1. Arrays.sort() import java.util.Arrays; Arrays.sort(arr)은 배열 arr을 오름차순 정렬 import java.util.Arrays; public class Main{ public static void main(String[] args){ int[] arr = new int[]{12,41,37,81,19,25,60,20}; Arrays.sort(arr); for(int i = 0; i < 8; i++){ System.out.print(arr[i] + " "); //12, 19, 20, 25, 37, 41, 60, 81 } } } 2. 부분정렬 특이하게 구간 인덱스를 명시하면 해당 구간만 정렬해줄 수도 있다 Arrays.sort(arr,시작 index, 끝 i..

자바 초보부터 B형까지9 -class 생성하기 필수-

1. class 두 학생의 국어 영어 수학 점수가 (90,80,80), (80,70,60)이라고 한다면, 이를 코드로 표현한다면 어떻게 해야할까? 가장 쉬운 방법은 6개의 변수를 만드는 것이다. int kor1 = 90, eng1 = 80, math1 = 90; int kor2 = 80, eng2 = 70, math2 = 60; 하지만 학생 수가 많아질수록 변수의 수는 그만큼 증가하니 상당히 귀찮은 작업이 된다. 이런 경우 하나의 학생을 지칭하는 새로운 형태를 정의하며, 그 형태를 이루기 위한 (국어, 영어, 수학) 점수 세트를 정의할 수 있을 것이다. 이를 class라고 부르고 자바에서 class는 다음과 같이 정의할 수 있다. class Student { int kor, eng, math; publi..