![[JAVA] 선형 검색(Linear Search), 보초법(Sentinel Method)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJvYnJ%2FbtrWxszDo4R%2Fq2BIg3HNLXVxWZd024CIE1%2Fimg.png)
Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 선형 검색(순차 검색) 선형 검색은 직선 모양으로 늘어선 배열에서 원하는 키 값을 갖는 요소를 만날 때까지 맨 앞부터 순서대로 요소를 검색하는 것을 말한다. 선형 검색에서 검색의 종료 조건은 아래의 2개와 같다. 검색할 값을 발견하지 못하고 배열의 끝을 지나간 경우 검색할 값과 같은 요소를 발견한 경우 첫 번째 조건이 성립하면 검색 실패, 두 번째 조건이 성립하면 검색 성공이다. 배열의 요솟수가 n개이면 조건 1, 2를 판단하는 횟수는 평균 n/2회이다. public class Main{ static int seqSearch(int[] arr, int key) { for(int i = 0; i < arr.length; ..
![[JAVA] 날짜 계산기 알고리즘](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdlreh0%2FbtrWuOjrD9I%2FlK2uAiP5QQXM1menXuYLX1%2Fimg.png)
Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 2023.01.01을 기준으로 100일 전은2022년 9월 23일(기준날 미포함)이고, 100일 후는2023년 4월 11일이다. 이러한 알고리즘을 자바로 구현하면 아래와 같다. 클래스 선언부 static class YMD { int year; int month; int day; YMD(int y, int m, int d) //생성자 { this.year = y; this.month = m; this.day = d; } int[][] arr = { {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, //평년 arr[0][] {31, 29, 31, 30, 31, 30, 31, 31, 3..
![[JAVA] 클래스 배열](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiClzA%2FbtrWuPvRRDc%2F2i7i9UTezzzG1kWPl8yceK%2Fimg.png)
Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 클래스 배열이란 클래스로 부터 만들어진 객체로 이루어진 배열을 뜻한다. 클래스 자체가 자료형이되어서 데이터를 더 쉽게 다룰 수 있다. 아래는 이름, 키, 시력을 저장하는 클래스의 객체로 이루어진 배열을 활용하여 평균 키와 시력 분포를 출력하는 예제 코드이다. public class Main{ static class PhyscData { //이름, 키, 시력을 저장하는 클래스 String name; int height; double vision; PhyscData(String name, int height, double vision) { //생성자 this.name = name; this.height = height; t..
![[JAVA] 한 해의 경과 일 수 / 남은 일 수를 계산하는 알고리즘](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNmOzW%2FbtrWsT4kis6%2FsaqMPpA65MHBT34KpttDu0%2Fimg.png)
Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 4월 15일을 예로 들면 그 해의 경과 일수를 구하면 아래와 같다. 1월의 일 수 + 2월의 일 수 + 3월의 일 수 + 15 m월 d일의 그 해 경과 일수는 아래와 같다. 1, 2, ..., m-1월의 일 수의 합 + d 그런데 2월의 일 수는 평년은 28일, 윤년은 29일로 해에 따라 달라진다. 윤년, 평년 지구가 태양 둘레를 한 바퀴 도는 일수는 정확히 365일이 아니다. 이를 조정하기 위해 4로 나누어 떨어지는 해를 윤년으로 하여 1년을 366일로 한다. 하지만 그래도 정확하기 않으므로 아래와 같은 규칙을 적용한다. -해당 연도를 4로 나누어 떨어지면 우선 윤년으로 하고 -윤년 중에서 100으로 나누어 떨어지면 ..
![[JAVA] n이하의 소수를 구하는 알고리즘](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKmWHB%2FbtrWqCvYpC7%2F0UEB864lbjyTNpYuhjJkG1%2Fimg.png)
Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 소수 소수는 자신과 1 이외의 정수로 나누어떨어지지 않는 정수이다. 예를 들어 소수 13은 2, 3, ..., 12 가운데 어떤 정수로도 나누어 떨어지지 않는다 그러므로 어떤 정수 n에 대하여 아래의 조건을 만족하면 소수임을 알 수 있다. "소수 n은 2부터 n-1까지의 어떤 정수로도 나누어 떨어지지 않는다." 만약 나누어 떨어지는 정수가 하나 이상 존재하면 그 수는 합성수이다. n 이하의 소수를 나열하는 알고리즘 (시간복잡도 높음, 공간복잡도 낮음) static void PrimeNumber(int n) { for(int i = 2; i
![[JAVA] Date, Calendar, LocalDateTime 클래스 (날짜와 시간 클래스)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtjlJx%2FbtrWcroJypx%2F3VlMpRLsjHyn4KcjcitF10%2Fimg.jpg)
본 게시글은 혼자 공부하는 자바 (저자 : 신용권)의 책과 유튜브 영상을 참고하였고, 개인적으로 정리하는 글임을 알립니다. 클래스 설명 Date 날짜 정보를 전달하기 위해 사용 Calendar 다양한 시간대별로 날짜와 시간을 얻을 때 사용 LocalDateTime 날짜와 시간을 조작할 때 사용 Date 클래스 Date 클래스는 날짜를 표현하는 클래스이다. Date는 객체 간에 날짜 정보를 주고받을 때 매개변수나 리턴 타입으로 주로 사용된다. Date 객체의 toString() 메소드는 영문으로 된 날짜를 리턴하기 때문에 원하는 날짜 형식의 문자열을 얻고 싶다면, java.text 패키지의 SimpleDateFromat 클래스와 함께 사용하는 것이 좋다. SimpleDateFromat 생성자의 매개값은 형..
![[JAVA] Math 클래스(올림, 내림, 반올림, 절댓값, 난수 등)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuw2Dj%2FbtrWnoQGzwL%2FJvivksxBPjieDuFTgT7og0%2Fimg.jpg)
본 게시글은 혼자 공부하는 자바 (저자 : 신용권)의 책과 유튜브 영상을 참고하였고, 개인적으로 정리하는 글임을 알립니다. java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공하고 있다. Math 클래스가 제공하는 메소드는 모두 정적(static) 메소드이므로 바로 사용할 수 있다. Math.abs(a) 메소드 int abs(int a) double abs(double a) a의 절댓값을 리턴 int v1 = Math.abs(-5); //5 double v2 = Math.abs(-3.14); //3.14 Math.ceil(a) 메소드 double ceil(double a) a의 올림값을 리턴 double v3 = Math.ceil(5.3); //6.0 double v4 = Mat..
![[JAVA] n진수 변환 알고리즘](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn4na1%2FbtrWc1CVwwH%2F8pqW1TAVn1DHmK0ddQ1JoK%2Fimg.png)
Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 10진수를 n진수로 변환하는 방법을 모른다면 아래의 포스팅에서[10진수-n진수 변환] 부분을 읽고 오시는 것을 추천합니다. 2022.11.29 - [Math/이산수학] - 진수, 진법 변환, 보수 진수, 진법 변환, 보수 [진수] [10진수] 기수가 10인 수 0, 1, 2 ,3, 4, 5, 6 ,7, 8, 9 -> 10개 수로 표현 [2진수] 기수가 2인 수 0, 1 두개의 수로 표현 [8진수와 16진수] [8진수] 0~7까지 8개의 수로 표현 2진수 3자리는 8진수 1자리 2진수 rebugs.tistory.com 10진수를 2~36진수로 변환하는 알고리즘 static void cardConvR(int x, int r..