9월8일

Yullgiii·2023년 9월 8일
0
post-thumbnail

ADsP

이제 강의는 모두 끝났고 복습하며 모의고사를 많이 풀어보는 방법 밖에 없을것 같아서
모의고사를 찾아보고 풀고있다!!!
1. 다음 데이터에 대한 설명으로 가장 적절하지 않은 것은?
1. 추론, 예측, 전망, 추정을 위한 근거(basis)로 기능하는 특성을 갖는다.
2. 데이터는 축적된 지식과 아이디어가 결합된 창의적인 산물이다.
3. 데이터는 개별 데이터 자체로는 의미가 중요하지 않은 객관적인 사실이다.
4. 다른 객체와의 상호 관계 속에서 가치를 갖는다.
- 답
- b
- 데이터의 정의 및 특성
- 데이터는 단순한 객체로서의 가치뿐만 아니라(존재적 특성) 다른 객체와의 상호관계 속에서 가치를 갖는 것으로 (당위적 특성) 설명되고 있다.
- 개별 데이터 자체로는 의미가 중요하지 않은 객관적 사실을 말한다. (존재적 특성)
- 추론•예측•전망•추정을 위한 근거(basis) (당위적 특성)
- DIKW의 정의

        | 구분 | 내용 |
        | --- | --- |
        | 데이터(Data) | 개별 데이터 자체로는 의미가 중요하지 않은 객관적인 사실  |
        | 정보(Information) | 데이터의 가공, 처리와 데이터 간 연관관계 속에서 의미가 도출된 것 |
        | 지식(Knowledge) | 데이터를 통해 도출된 다양한 정보를 구조화하여 유의미한 정보를 분류하고 
        개인적인 경험을 결합시켜 고유의 지식으로 내재화된 것  |
        | 지혜(Wisdom) | 지식의 축적과 아이디어가 결합된 창의적인 산물  |
  1. 빅데이터가 가치 창출 측면에서 기업, 정부, 개인에게 미친 영향으로 옳지 않은 것은?
    1. 산업 전체의 생산성이 향상되었다.
    2. 개인은 맞춤형 서비스를 받거나 적시에 필요한 정보를 얻음으로써 기회비용을 절약하게 되었다.
    3. 기업활동의 투명성은 없어지지만 경쟁사보다 강한 경쟁력을 확보하는 데 도움이 되었다.
    4. 비즈니스 모델을 혁신하거나 신사업 발굴에 활용할 수 있게 되었다.
      • c
      • 빅데이터가 미치는 영향
        분야영향내용
        기업• 비즈니스 모델 혁신
        • 경쟁력 확보
        • 산업 전체의 생산성 향상
        • 신사업 발굴
        • 기업활동의 투명성 제공
        • GDP 상승 효과 | 빅데이터를 활용해 소비자의 행동을 분석하고 시장 변동을 예측해 비즈니스 모델을 혁신하거나 신사업을 발굴한다. |
        | 정부 | • 환경 탐색
        • 상황 분석
        • 미래 대응
        • 사회 변화 추정
        • 재해 관련 정보 추출 | 기상, 인구이동, 각종 통계, 법제 데이터 등을 수집해 사회 변화를 추정하여, 관련 정보를 추출한다. |
        | 개인 | • 맞춤형 서비스
        • 목적에 따른 활용 | 빅데이터를 서비스화하는 기업의 출현이 늘어나면서, 데이터 분석 비용이 지속적으로 하락하여 정치인이나 대중 가수 등과 같은 개인도 인지도 향상에 빅데이터를 활용한다. |
  2. 사생활 침해 문제를 해결하기 위한 방법으로 가장 적절한 것은 무엇인가?
    1. 개인정보 사용자 책임제로 전환
    2. 결과기반 책임 원칙 고수
    3. 알고리즘 접근 허용
    4. 사용자 동의제도 시행
      • a
      • 빅데이터 위기 요인과 해결 방안
        위기 요인해결 방안
        사생활 침해동의제를 책임제로 전환 → 개인정보 사용자가 책임을 지게 된다.
        책임 원칙 훼손기존의 책임 원칙 강화
        데이터 오용데이터 알고리즘에 대한 접근권 허용
  3. 암묵지와 형식지 상호작용의 과정 중 개인의 내재된 경험을 객관적인 데이터로 변환하여 문서나 매체에 저장·가공·분석하는 과정을 무엇이라고 하는가?
    1. 표출화
    2. 연결화
    3. 내재화
    4. 공통
      • a
      • 암묵지, 형식지의 4단계 지식 전환 모드
        • 1단계 : 암묵적 지식 노하우를 다른 사람에게 알려주는 것 - 통화
        • 2단계 : 암묵적 지식 노하우를 책이나 교본 등 형식지로 만드는 것 - 출화
        • 3단계 : 책이나 교본(형식지)에 자신이 알고 있는 새로운 지식을 추가하는 것 - 결화
        • 4단계 : 만들어진 책이나 교본(형식지)을 보고 다른 사람들이 노하우(암묵지)를 습득 - 면화
  4. 다음 비식별화 기법에 대한 설명으로 틀린 것은?
    1. 가명처리는 식별할 수 없는 다른 값으로 대체를 의미한다.
    2. 데이터 마스킹은 개인 정보 식별이 가능한 특정 값을 삭제하는 것이다.
    3. 범주화는 단일 식별 정보 해당 그룹의 대푯값으로 변환을 한다.
    4. 총계처리는 총합 또는 평균값으로 대체하여 개별 데이터의 값이 보이지 않도록 하는
      것이다.
      • b
      • 비식별 기술의 종류와 예
        비식별 기능내용예시
        데이터 마스킹데이터의 길이, 유형, 형식과 같은 속성을 유지한 채, 새롭고 읽기 쉬운 데이터를 익명으로 생성하는 기술홍길동, 35세, 서울 거주, 한국대 재학
        → 홍, 35세, 서울 거주, 대학 재학
        가명 처리개인정보 주체의 이름을 다른 이름으로 변경하는 기술. 주요 식별 요소를 다른 값으로 대체할 시 일정한 규칙이 노출되지 않도록 주의해야 함홍길동, 35세, 서울 거주, 한국대 재학
        → 임꺽정, 30대, 서울 거주, 국내대 재학
        총계 처리데이터의 총합 값을 보임으로써 개별 데이터의 값을 보이지 않도록 함. 단, 특정 속성을 지닌 개인으로 구성된 단체의 속성 정보를 공개하는 것은 개인 정보를 공개하는 것과 마찬가지의 결과이므로 주의해야 함임꺽정 180cm, 홍길동 170cm, 이콩쥐 160cm, 김팥쥐 150cm
        → 물리학과 학생 키 합: 660cm, 평균키 165cm
        데이터값 삭제데이터 공유, 개방 목적에 따라 데이터셋에 구성된 값 중에 필요없는 값 또는 개인 식별에 중요한 값을 삭제. 개인과 관련된 날짜 정보(자격 취득일자, 합격일 등)은 연단위로 처리홍길동, 35세, 서울 거주, 한국대 졸업
        → 35세, 서울 거주
        주민등록번호 901206-1234567
        → 90년대 생, 남자 |
        | 데이터 범주화 | 데이터의 값을 범주의 값으로 변환하여 값을 숨김 | 홍길동, 35세 → 홍씨, 30~40세 |

와같이 이러한 방식의 문제를 푸는중이다

회고

문제를 풀어보니 내가 부족한 과목을 알게 되며 복습의 재미를 느끼고 있다.

내일 배움 캠프

당장은 더이상 제공하는 강의가 없으므로 Java에 중점을 두고 공부하려한다

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));

    }
}

드디어 끝났다!!!

나도코딩님의 기초 자바를 듣고 아직 부족한부분이 많아서 얄코님의 자바 강의를 듣기 시작할것익다. 부족한 부분은 다른분들의 부분도 더 들어보며 복습과 나아감을 동시에 하여야한다.

얄코님의 강의를 시청하기 시작

오늘은 우선 사람마다 세팅이 다른데 다른 세팅정보를 볼겸 기초 세팅 먼저 보고 따라해보려한다.
따라하고 강의를 보는데 나도코딩님이랑은 다르다.
좀 더 세세하게 알려주셔서 배웠던 부분은 배속을 높여서 다시금 복습해 보려한다.

회고

세상에는 능력자는 많고 강의는 다양하고 같은내용도 내가 잘 이해하는 방식이 있고 나에게 친숙한 내용이 있다는걸 알게되었다. 남들이 좋다고 무조건 쓰거나 따라가는것이 아닌 내가 다 들어보고 판단해야한다고 느껴진다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글