본문 바로가기

Java

(501)
[JAVA] 백준 19523 수학은 비대면 강의입니다 19532번: 수학은 비대면강의입니다 (acmicpc.net) 19532번: 수학은 비대면강의입니다 정수 $a$, $b$, $c$, $d$, $e$, $f$가 공백으로 구분되어 차례대로 주어진다. ($-999 \leq a,b,c,d,e,f \leq 999$) 문제에서 언급한 방정식을 만족하는 $\left(x,y\right)$가 유일하게 존재하고, 이 때 $x$와 $y$가 각각 $- www.acmicpc.net - 처음에는 연립 방정식 가감법을 이용해서 이렇게 품 (arithmeticexception 예외 처리 안한 상태) import java.util.Scanner; //가감법 - 두 식에 적절한 수를 곱하거나 나누어 한 문자를 소거하는 방법 public class Main { public static ..
[JAVA] 백준 2231 분해합 2231번: 분해합 (acmicpc.net) 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 풀이 과정 N의 분해합 - N과 N을 이루는 각 자리수의 합 - M의 분해합이 N인 경우, M을 N의 생성자라 함 - 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램 작성 - 정수의 각 자리수의 합을 구하는 digitsum 메서드 작성 - 입력값 n 보다 작을때까지 반복문을 돌려 수와 수의 각 자리수의 합이 n과 같으면 배열에 담기 - 배열 중 최소값 출력 - bool..
3-3 이진 검색 1. 이진 검색 이진 검색(binary search) - 요소가 오름차순 또는 내림차순으로 정렬된 배열에서 검색하는 알고리즘 - pl = 검색 범위의 맨 앞 인덱스 , 0 - pr = 검색 범위의 맨 끝 인덱스 , n-1 - pc = 검색 범위의 중앙 인덱스 , (n-1)/2 - 이진 검색을 한 단계씩 진행할 때마다 검색범위가 반으로 좁혀짐 1) a[pc] key일 때 - a[pc] ~ a[pr]은 key보다 큰 것이 분명하므로 검색 대상에서 제외 - 검색 범위를 중앙 요소 ..
3-2 선형 검색 1. 선형 검색 선형 검색(linear search) - 요소가 직선 모양으로 늘어선 배열에서 검색은 원하는 키값을 갖는 요소를 만날 때까지 맨앞부터 순서대로 요소를 검색 - 선형 검색에서의 배열 검색의 종료 조건 1) 종료 검색할 값을 발견하지 못하고 배열의 끝을 지나간 경우 -> 검색 실패 2) 종료 검색할 값과 같은 요소를 발견한 경우 -> 검색 성공 - 배열의 요솟수가 n개 일때 종료 조건 1,2를 판단하는 횟수는 평균 n/2회 ex) 2를 검색 5를 검색 - 요솟수가 n인 배열 a에서 값이 key인 요소를 검색하는 코드 int i=0; while(true) { if(i==n) return -1; //검색 실패(-1을 반환) if(a[i] == key) return i; //검색 성공(인덱스를 반..
3-1 검색 알고리즘 1. 검색과 키 - 데이터 집합에서 원하는 값을 가진 요소를 찾아냄 ex) - 주소록 검색 1. 국적이 한국인 사람을 찾습니다. 2. 나이가 21세 이상 27세 미만인 사람을 찾습니다. 3. 찾으려는 이름과 가장 비슷한 이름을 가진 사람을 찾습니다. - 이러한 검색은 특정 항목에 주목한다는 공통점이 있음 - 키(key) = 주목하는 항목 1. 키값과 일치하도록 지정(한국) 2. 키값의 구간을 지정(21세 이상 27세 미만) 3. 키값과 비슷하도록 지정(발음이 가장 비슷한 이름) - 조건은 하나만 지정하기도 하지만 논리곱이나 논리합을 사용하여 여러 조건을 복합해서 지정하기도 함 2. 배열에서 검색하기 활용 알고리즘 1) 선형 검색 - 무작위로 늘어서 있는 데이터 모임에서 검색을 수행 2) 이진 검색 - 일..
2-2 클래스 1. 클래스 다루기 클래스(class) - 여러 형의 요소를 조합하여 만든 자료구조 ex) //클래스 XYZ class XYZ { int x; long y; double z; } - 클래스 XYZ는 3개의 데이터 요소를 가지고 있음 - 데이터 요소를 필드(field)라고 함 - 클래스형 변수를 사용할 때는 먼저 클래스형 변수(실체를 참조하는 변수)를 만들고, 그와 동시에 실체인 클래스 인스턴스를 생성 XYZ a; //XYZ형의 클래스형 변수 a 선언 a = new XYZ(); //XYZ형의 클래스 인스턴스를 생성하고 참조하는 곳을 대입 - 클래스형 변수 a가 참조하는 클래스 인스턴스 안의 필드는 멤버 접근 연산자 (.)를 사용하는 a.x, a.y, a.z로 접근 2. 클래스에서 배열 구현하기 - 신체검사..
2-1 배열 자료구조 - 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계 1. 배열 다루기 1) 배열(Array) - 같은 자료형의 변수인 구성 요소(component)가 모인 것 ex) 구성 요소의 자료형이 int형이고 구성 요소가 5개인 배열 int[] a; //구성 요소의 자료형이 int형인 배열 a = new int[5]; //new를 사용하여 배열 본체를 생성한 뒤 배열 변수 a와 연결 - 배열 본체를 생성하고, 본체에 대한 참조를 생성 - 배열 본체를 생성하는 new 식을 배열 변수의 초기자(initializer)로 사용 int[] a = new int[5]; 2) 인덱스 식과 구성 요소 - 배열 본체 안의 구성요소에 접근(access)하려면 정수형 인덱스를 연산자 [ ]안에 넣은 인덱스 식을..
1-2. 반복 1. 1부터 n까지 정수의 합 구하기 - while문으로 n까지의 정수의 합 구하기 //while문으로 1,2,...,n의 합을 구함 import java.util.Scanner; public class SumWhile { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("1부터 n까지의 합을 구합니다."); System.out.print("n값: "); int n = sc.nextInt(); int sum =0; int i=1; while(i