이제 강의는 모두 끝났고 복습하며 모의고사를 많이 풀어보는 방법 밖에 없을것 같아서
모의고사를 찾아보고 풀고있다!!!
1. 다음 데이터에 대한 설명으로 가장 적절하지 않은 것은?
1. 추론, 예측, 전망, 추정을 위한 근거(basis)로 기능하는 특성을 갖는다.
2. 데이터는 축적된 지식과 아이디어가 결합된 창의적인 산물이다.
3. 데이터는 개별 데이터 자체로는 의미가 중요하지 않은 객관적인 사실이다.
4. 다른 객체와의 상호 관계 속에서 가치를 갖는다.
- 답
- b
- 데이터의 정의 및 특성
- 데이터는 단순한 객체로서의 가치뿐만 아니라(존재적 특성) 다른 객체와의 상호관계 속에서 가치를 갖는 것으로 (당위적 특성) 설명되고 있다.
- 개별 데이터 자체로는 의미가 중요하지 않은 객관적 사실을 말한다. (존재적 특성)
- 추론•예측•전망•추정을 위한 근거(basis) (당위적 특성)
- DIKW의 정의
| 구분 | 내용 |
| --- | --- |
| 데이터(Data) | 개별 데이터 자체로는 의미가 중요하지 않은 객관적인 사실 |
| 정보(Information) | 데이터의 가공, 처리와 데이터 간 연관관계 속에서 의미가 도출된 것 |
| 지식(Knowledge) | 데이터를 통해 도출된 다양한 정보를 구조화하여 유의미한 정보를 분류하고
개인적인 경험을 결합시켜 고유의 지식으로 내재화된 것 |
| 지혜(Wisdom) | 지식의 축적과 아이디어가 결합된 창의적인 산물 |
분야 | 영향 | 내용 |
---|---|---|
기업 | • 비즈니스 모델 혁신 |
위기 요인 | 해결 방안 |
---|---|
사생활 침해 | 동의제를 책임제로 전환 → 개인정보 사용자가 책임을 지게 된다. |
책임 원칙 훼손 | 기존의 책임 원칙 강화 |
데이터 오용 | 데이터 알고리즘에 대한 접근권 허용 |
비식별 기능 | 내용 | 예시 |
---|---|---|
데이터 마스킹 | 데이터의 길이, 유형, 형식과 같은 속성을 유지한 채, 새롭고 읽기 쉬운 데이터를 익명으로 생성하는 기술 | 홍길동, 35세, 서울 거주, 한국대 재학 |
→ 홍, 35세, 서울 거주, 대학 재학 | ||
가명 처리 | 개인정보 주체의 이름을 다른 이름으로 변경하는 기술. 주요 식별 요소를 다른 값으로 대체할 시 일정한 규칙이 노출되지 않도록 주의해야 함 | 홍길동, 35세, 서울 거주, 한국대 재학 |
→ 임꺽정, 30대, 서울 거주, 국내대 재학 | ||
총계 처리 | 데이터의 총합 값을 보임으로써 개별 데이터의 값을 보이지 않도록 함. 단, 특정 속성을 지닌 개인으로 구성된 단체의 속성 정보를 공개하는 것은 개인 정보를 공개하는 것과 마찬가지의 결과이므로 주의해야 함 | 임꺽정 180cm, 홍길동 170cm, 이콩쥐 160cm, 김팥쥐 150cm |
→ 물리학과 학생 키 합: 660cm, 평균키 165cm | ||
데이터값 삭제 | 데이터 공유, 개방 목적에 따라 데이터셋에 구성된 값 중에 필요없는 값 또는 개인 식별에 중요한 값을 삭제. 개인과 관련된 날짜 정보(자격 취득일자, 합격일 등)은 연단위로 처리 | 홍길동, 35세, 서울 거주, 한국대 졸업 |
와같이 이러한 방식의 문제를 푸는중이다
문제를 풀어보니 내가 부족한 과목을 알게 되며 복습의 재미를 느끼고 있다.
당장은 더이상 제공하는 강의가 없으므로 Java에 중점을 두고 공부하려한다
오늘의 목표는 나도코딩님의 강의를 무료부분인 메소드 파트까지 듣고
지인찬스로 지인이 들을수 있는 강의인 알코님의 강의를 들으려고 한다.
03_MultidimensionalArray {
public static void main(String[] args) {
// 다차원 배열 (2차원 배열)
// 소규모 영화관 좌석
// A1-A5 ~C1-C5
// 일반 배열법
String[] seatA = {"A1", "A2", "A3", "A4", "A5"};
String[] seatB = {"B1", "B2", "B3", "B4", "B5"};
String[] seatC = {"C1", "C2", "C3", "C4", "C5"};
// 다중 배열법 (2차원) 3*5 크기의 2차원 배열
String[][] seats = new String[][]{
{"A1", "A2", "A3", "A4", "A5"},
{"B1", "B2", "B3", "B4", "B5"},
{"C1", "C2", "C3", "C4", "C5"}
};
// B2 에 접근하려면
System.out.println(seats[1][1]);
// 첫줄 3칸 , 둘째줄은 4칸, 셋째줄은 5칸
String[][] seats2={
{"1","2","3"},
{"1","2","3","4"},
{"1","2","3","4","5"}
};
//A5에 접근을 한다면?
//System.out.println(seats2[0][5]);
//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 3
// at chap05._03_MultidimensionalArray.main(_03_MultidimensionalArray.java:30)
//이라는 에러가 발생
// 3차원 배열 만들기 (세로 * 가로 * 높이)
String[][][] marray = new String[][][]{
{ {}, {}, {}},
{ {}, {}, {}},
{ {}, {}, {}}
};
//marray[0][1][2]
}
}
04_MultiArrayLoop {
public static void main(String[] args) {
//다차원 배열 순회
String[][] seats = new String[][]{
{"A1", "A2", "A3", "A4", "A5"},
{"B1", "B2", "B3", "B4", "B5"},
{"C1", "C2", "C3", "C4", "C5"}
};
for (int i = 0; i < 3; i++) { //세로
for (int j = 0; j < 5; j++) {
System.out.print(seats[i][j] + " ");//A1 A2 A3...
}
System.out.println();
}
String[][] seats2 = {
{"1", "2", "3"},
{"1", "2", "3", "4"},
{"1", "2", "3", "4", "5"}
};
for (int i = 0; i < seats2.length; i++) {
for (int j = 0; j < seats2[i].length; j++) {
System.out.print(seats2[i][j] + " ");
}
System.out.println();
}
System.out.println("-------------------------");
//세로 크기 10 가로 크기 15 에 해당하는 영화관
String[][] seats3 = new String[10][15];
String[] eng = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};
for (int i = 0; i < seats3.length; i++) { //세로
for (int j = 0; j < seats3[i].length; j++) {
seats3[i][j] = eng[i] + (j + 1);
}
}
//영화관 좌석 확인
for (int i = 0; i < seats3.length; i++) {
for (int j = 0; j < seats3[i].length; j++) {
System.out.print(seats3[i][j] + " ");
}
System.out.println();
}
}
}
_05_ASCII {
public static void main(String[] args) {
//아스키 코드 (ANSI) : 미국 표준 코드
char c = 'A'; // 알파벳 대문자는 65 부터 시작, 소문자는 97부터 시작, 숫자(0)은 48 부터 시작
System.out.println(c);
System.out.println((int) c); //65
c = 'B';
System.out.println(c);
System.out.println((int) c); //66
c++;
System.out.println(c); //C
System.out.println((int) c); //67
System.out.println("----------------------------");
String[][] seats3 = new String[10][15];
char ch = 'A';
for (int i = 0; i < seats3.length; i++) { //세로
for (int j = 0; j < seats3[i].length; j++) {
seats3[i][j] = String.valueOf(ch) + (j + 1);
}
ch++;
}
for (int i = 0; i < seats3.length; i++) {
for (int j = 0; j < seats3[i].length; j++) {
System.out.print(seats3[i][j] + " ");
}
System.out.println();
}
}
}
//배열을 활용하여 쇼핑몰에서 구매가능한 신발 사이즈 옵션을 출력하는 프로그램
//신발은 250부터 295 까지 5단위로 증가
//신발사이즈 수는 총 10가지
//출력예시 사이즈 250 (재고 있음)
public class _06_NoDap {
public static void main(String[] args) {
int[] size = new int[10];
for (int i = 0; i < size.length; i++) {
size[i] = 250 + (5 * i);
}
for (int si :
size) {
System.out.println("사이즈 "+ si + "(재고있음)");
}
}
}
Chap05를 마무리하고 쉬지않고 바로 Cahp06으로 넘어간다.
01_Method {
//메소드 정의 : 어떤기능을 하는 코드들의 묶음.
// 메소드 (파이썬의 함수와 비슷)
public static void sayHello() { //변수의 이름과 비슷 첫글자는 소문자(대부분 동사를 사용)
System.out.println("안녕하세요 메소드입니다.");
}
public static void main(String[] args) {
//메소드 호출
System.out.println("Before");
sayHello();
System.out.println("After");
}
}
02_Parameter {
//전달값이 있는 메소드
public static void power(int num) {
int result = num * num;
System.out.println(num + " square is " + result);
}
public static void powerByExp(int num, int exponent){
int result =1;
for (int i = 0; i < exponent; i++) {
result *= num;
}
System.out.println(num + "의"+exponent+"제곱은"+result);
}
public static void main(String[] args) {
// 전달값, Parameter
// 2 -> 2 * 2 = 4
// Argument, 인수
power(2); //2 * 2 = 4
power(3);
powerByExp(2,3);//2*2*2 = 8
}
}
03_Return {
//호텔 전화번호
public static String getNumber(){
String phoneNum = "02-1234-5678" ;
return phoneNum;
}
//호텔 주소
public static String getAdd(){
return "Somewhere in Seoul";
}
//엑티비티
public static String getActivities(){
return "볼링장, 탁구장, 노래방";
}
public static void main(String[] args) {
// 반환값, Return
String contactNum = getNumber();
System.out.println("hotel Num is " + contactNum);
String address = getAdd();
System.out.println("Hotel Add is "+ address);
System.out.println("Hotel Activity is " +getActivities());
}
}
package chap06;
public class _04_ParameterAndReturn {
// public static void power(int num) {
// int result = num * num;
// System.out.println(num + " square is " + result);
// }
public static int getPower(int num){
int result = num * num ;
return result;
// return num * num
}
// public static void powerByExp(int num, int exponent){
// int result =1;
// for (int i = 0; i < exponent; i++) {
// result *= num;
// }
// System.out.println(num + "의"+exponent+"제곱은"+result);
// }
public static int getPowerExp(int num, int exponent){
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= num;
}
return result;
}
public static void main(String[] args) {
//전달값과 반한값이 있는 메소드
int retVal = getPower(2);
System.out.println(retVal);
retVal =getPowerExp(3,3);
System.out.println(retVal);
}
}
05_Overloading {
public static int getPower(int num) {
int result = num * num;
return result;
}
public static int getPower(String strNum){
int num = Integer.parseInt(strNum);
return num * num;
}
public static int getPower(int num, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= num;
}
return result;
}
public static void main(String[] args) {
//메소드 오버로딩 : 전달값의 타입 갯수 등등 이 다르면 같은 이름의 메소드를 중복 선언 가능
//같은 이름의 메소드를 여러번 선언
//1. 전달값의 타입이 다르거나
//2. 전달값의 갯수가 다르거나
System.out.println(getPower(3));//3
System.out.println(getPower("4"));//16
System.out.println(getPower(3,3));//27
}
}
다른 여러번의 계산 식을 쓰는게 아니라 간단하게 정의만 해두면 출력만 할수있기에
코드의 정리와 코드가 자연스럽게 볼수있다.
public class _07_VariableScope {
// public static void methodA(){
// System.out.println(number);
// }
public static void main(String[] args) {
//변수의 범위
int number =3;
for (int i = 0; i < 5; i++) {
System.out.println(i); //지역변수 {}안쪽에서만 사용가능
}
08_MainMethod {
public static void main(String[] args) {
for (String s :
args) {
System.out.println(s);
}
// 1. 도서 조회
// 2. 도서 대출
// 3. 도서 반납
if (args.length==1){
switch (args[0]){
case "1":
System.out.println("조회");
break;
case "2" :
System.out.println("대출");
break;
case "3":
System.out.println("반납");
break;
default:
System.out.println("잘못입력했습니다");
}
}else{
System.out.println("1~3 선택해주세요");
}
}
}
커런트값을 주는 테스트를 할수있게 메인에 입력값을 줄수있게 되었다.
package chap06;
//개인정보중 일부를 비공개로 전환하는 프로그램을 작성하시오
//개인정보를 비공개로 전환하는 메소드 작성
//하나의 메소드에서 모든동작 처리
//각정보는 아래위치부터 비공개 적용
//이름:2번째 글자
//주민번호:9번째 글자
//전화번호: 10번 글자
public class _09_NoDapp {
public static String getHiddenData(String data,int index){
String hiddenData = data.substring(0,index); // 진 이라는 글자만나오게함
for (int i = 0; i < data.length()-index; i++) {
hiddenData += "*";
}
return hiddenData;
}
public static void main(String[] args) {
String name = "진유록"; //이름
String id = "951128-1234567"; // 주민등록번호
String phone = "010-8683-1234"; // 전화번호
System.out.println("이름 : "+ getHiddenData(name,1)); //개인정보 비공개 시작위치
System.out.println("주민번호 : "+getHiddenData(id,8));
System.out.println("전화번호 : "+getHiddenData(phone, 9));
}
}
나도코딩님의 기초 자바를 듣고 아직 부족한부분이 많아서 얄코님의 자바 강의를 듣기 시작할것익다. 부족한 부분은 다른분들의 부분도 더 들어보며 복습과 나아감을 동시에 하여야한다.
오늘은 우선 사람마다 세팅이 다른데 다른 세팅정보를 볼겸 기초 세팅 먼저 보고 따라해보려한다.
따라하고 강의를 보는데 나도코딩님이랑은 다르다.
좀 더 세세하게 알려주셔서 배웠던 부분은 배속을 높여서 다시금 복습해 보려한다.
세상에는 능력자는 많고 강의는 다양하고 같은내용도 내가 잘 이해하는 방식이 있고 나에게 친숙한 내용이 있다는걸 알게되었다. 남들이 좋다고 무조건 쓰거나 따라가는것이 아닌 내가 다 들어보고 판단해야한다고 느껴진다.