본문 바로가기

📚Study Note/JAVA

(49)
[ JAVA ] 배열과 정렬알고리즘을 활용한, 성적 등수 출력 import java.util.Scanner; public class Test105 { public static void main(String[] args) { // 스캐너 인스턴스 생성하고 인원수만큼 이름과 점수를 받는다. // 받은 인원수를 기반으로 이름을 받을 String[], 점수를 받을 int[]을 만든다. // (인원수만큼)이름과 점수를 사용자에게 입력받는다. // for문을 이용해서 점수를 비교하고 배열 요소의 순서를 바꾼다. (점수의 경우 ^ 연산자, 이름은 String temp를 만들어 순서변경) // 결과를 출력한다. Scanner sc = new Scanner(System.in); int n; System.out.print("인원 수 입력 : "); n=sc.nextInt(); Sys..
[ JAVA ] 정렬 (Sort) 알고리즘 : "향상된" 버블 정렬 (Bubble Sort) ※ 앞서 포스팅했던 selection sort 나 bubble sort의 성능은 같다(반복의 횟수로 측정) 하지만, 향상된 Bubble Sort는 대상이 되는 데이터의 구조에 따라 일반 bubble sort나 selection sort보다 성능이 좋을 수 있다. 예를 들어 원본데이터 {61, 15, 20, 22, 30}을 오름차순으로 정렬한다고 했을 때 15 20 22 30 61 : 1회전에서는 스왑이 발생 15 20 22 30 61 : 2회전에서는 스왑이 발생하지 않고 다음 회전이 필요 X 1회전 수행...2회전 수행...을 해봤더니 2회전을 수행하는 과정에서 스왑(자리바꿈)이 전혀 일어나지 않았기 때문에 불필요한 추가 연산이 필요하지 않다. public class Test104 { public sta..
[ JAVA ]정렬 (Sort) 알고리즘 : 버블 정렬 (Bubble Sort) 52, 42, 12, 62, 60 → 0 1 ====== 52, 12, 52, 62, 60 → 1 2 ====== 52, 12, 52, 62, 60 → 2 3 ====== 52, 12, 52, 60, 62 → 3 4 ====== ------------------------------------------------------1회전 12, 42, 52, 60, 62 → 0 1 ====== 12, 42, 52, 60, 62 → 2 3 ====== 12, 42, 52, 60, 62 → 3 4 ====== ----------------------------------------------------- 2회전 12, 42, 52, 60, 62 → 0 1 ====== 12, 42, 52, 60, 62 → 1 ===..
[ JAVA ] 정렬 (Sort) 알고리즘 : 선택 정렬 (Selection Sort) ● 정렬이란? : 데이터를 특정한 규칙(기준)에 맞게 순서대로 나열(오름차순 , 내림차순) ● 정렬의 목적 : 데이터 처리 과정의 편의성이나 가독성을 높이기 위함 → 보기 좋게... 검색하기 위함. ※ 정렬은... 리소스 소모가 심하다. ● 정렬의 종류 : 선택정렬, 버블정렬, 삽입정렬, 힙정렬, 쉘정렬, 퀵정렬 .... 이외에도 많다. 52, 42,12,62,60 →0,1 ====== 42, 52,12,62,60 →0,2 === === 12, 52,42,62,60 →0,3 === === 12, 52,42,62,60 →0,4 === === ----------------------------------------1회전 12, 42,52,62,60 →1,2 ====== import java.util.Scan..
[ JAVA ] 주민등록번호 유효성 검사(...는 이제 안됨) ○ 주민번호 검증 공식 ① 마지막 자리를 제외한 앞자리 수를 규칙에 맞게 곱한다. 1 2 34 59 - 12 3 4 5 67( → 주민번호) * * * * * * - * * * * * * * 234567 892345 ( → 각 자리에 곱해진 수) ② 규칙에 맞게 곱셈 연산을 수행한 결과를 모두 더한다. ex 7 5 0 6 1 5 - 1 8 6 2 1 3 3 * * * * * * - * * * * * * 2 3 4 5 6 7 - 8 9 2 3 4 5 -------------------------------------------- 14 + 15+ .... 12+ 15 ==217 ③ 더해진 결과물을 11로 나누어 『 나머지』 를 구한다. 217 % 11 → 8 ④ 11에서 나머지를 뺀 결과값을 구한다. 11 ..
[ JAVA ] 배열을 활용한 만능달력 ● 다음과 같은 프로그램을 구현한다. 실행 예) 『연도』 를 입력하세요 : 2021 『월』 을 입력하세요 : 7 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Test100 { public static void main(String[] args) throws IOException { //BufferedReader 클래스 인스턴스 생성 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 배열 선언 및 초기화 // 각 달이 담고있는 마지막 날짜 (매 월의 최대 날짜) int[] da..
[ JAVA ] 배열 (Array)의 복사, 합집합 출력 // ● 실습 문제 // 임의의 배열(a, b)에 들어있는 숫자들의 합집합을 출력하는 프로그램을 구현한다. // 단, 중복이 제거된 상태의 합집합을 출력할 수 있도록 한다. // 또한 배열 복사 개념을 적용시켜 처리할 수 있도록 한다. // ex) 임의의 두 배열 // int[] a = {2, 3, 7, 10, 11} // int[] b = {3, 6, 10, 14} //실행 예) // 2 3 7 10 11 6 14 //방법1. 집합a의 전체요소를 출력하고 중복을 제거한 집합 b를 출력한다 public class Test099_1 { public static void main(String[] args) { //방법1. 집합a의 전체요소를 출력하고 중복을 제거한 집합 b를 출력한다 int[] a = {2,..
[ JAVA ] 배열의 복사 - 얕은복사와 깊은복사 (주소값 복사와 데이터복사) 마치 이런 것과 같다. 우리가 팀플을 한다. 내가 PPT의 원본을 가지고 있다고 할 때 그것을 팀원들과 공유하기 위해서 나는 클라우드 계정에 올려 팀원들에게 '이리 들어와서 봐' 라고 할 수 있고, 또는 파일의 원본을 팀원들에게 보낼 수 있다. 클라우드 계정에 올리는 것이 얕은 복사이고 직접 원본을 보내는 것이 데이터복사이다. 얕은 복사의 경우 내가 작업하는 내용이 바로바로 팀원들에게 보인다. 원본을 직접 보내면 그것은 이제 내 손을 떠난 아예 똑같은 복사본이다. 팀원들이 어떻게 고치든 그것은 이제 내 파일이 아니다. ※ 배열 변수의 복사는 데이터 복사, 주소값 복사 두 가지 형태가 존재한다. 주소값 복사(얕은 복사)→ 원본을 수정하면 복사본에 영향을 미치게 되는 복사 방법 배열 뿐 아니라 모든 참조형 ..