WIL 1

murphytklee·2023년 4월 10일
0

WIL

목록 보기
1/9

2023.04.03 ~ 2023.04.09

1. Did

    • Java 문법 종합 1주차
      • JVM에 대해 이해 - OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터
      • JVM 구성요소 (클래스 로더, 실행 엔진, 런타임 데이터 영역, Garbage collection, Thread, …)
      • JVM에서의 메모리 관리 (Stack, Heap) 영역에 대한 이해
      • Java의 저장공간 종류(변수 타입)와 변환에 대해 이해
    • Java 문법 종합 2주차
      • 연산자, 조건문, 반복문을 통해 문맥 구성
      • 배열, 컬렉션으로 연속된 데이터들을 효율적으로 저장하고 관리하는 법
    • Java 문법 종합 3주차
      • 객체지향 프로그래밍 개념
      • 객체의 구성요소(필드, 메서드, 생성자)
      • 클래스 변수, 인스턴스 변수 차이점
      • 생성자, 오버로딩
      • this, this(), super, super() 키워드
      • pakage, import
      • 다형성의 원리와 구현방법
      • 추상클래스
      • 인터페이스 역할, 구성요소, 구현방법, 메서드 등
    • Java Baseball 팀과제
  • 목:
    • Java 문법 종합 4주차
      • 오류 및 예외의 개념
      • try-chatch, finally 문으로 다루는 방법
      • Generic 문법이 왜 필요한지, 어떠한 효용이 있는지, 대표적 사용 예시인 Collection이 어떻게 구현되는지
      • Wrapper 객체
    • Git 명령어로 다루기
  • 금:
    • 프로그래머스 Java Lv.1 (1)
      • 14문제 풀이 후 팀원들과 코드리뷰
  • 토:
    • 프로그래머스 Java Lv.1 (2)
      • 14문제 페어 프로그래밍(Navigator, Driver) 번갈아가며 수행
  • 일: 휴식



2. Problems

2.1 Java 문법 종합 1주차

public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String title = sc.nextLine();
        float rate = sc.nextFloat();
        sc.nextLine();
        String input1 = sc.nextLine();
        String input2 = sc.nextLine();

problem

  • nextLine을 받다가 nexFloat을 받고 다시 nextLine을 받으니 입력이 한줄 스킵됐다.

Why ?

  • next는 사이띄기, tab키, enter키로 분리해서 데이터를 가져가기 때문에 enter키 = 데이터가 남아있어서 그 enter키를 가져가서 사용

Try

  • nextLine직전에 scan.nextLine()을 한번 더써서 입력버퍼를 비워준다.

2.2 Java Baseball 팀과제

// (4) 게임 Loop
        while (true) {
            System.out.println(count + "번째 시도:");
            String player = scan.next();
            // String -> char 배열로 변환
            //charAt(int index)로 추출한 숫자형 문자는 char형이므로 int형으로 변환 시 아스키코드로 변환된다.
            //따라서 '0'(48)을 빼주어야 의도한 리턴값을 얻을 수 있다.
            for(int i=0; i<player.length(); i++){
                intplayer[i] = player.charAt(i)-'0';
            } 

problem

  • 처음 player의 input 값을 int형으로 받을 경우 3번의 입력값으로 데이터를 받아야 했다.
  • ex) 2 3 5 → {2, 3, 5}

Why ?

  • 235라는 값을 한번에 받았을 때 235라는 숫자로 인식이 되기 때문에 String으로 받아 인덱스값으로 int배열에 넣어줘야한다.

Try

  • 235값을 받았을 때 {2, 3, 5} 같이 배열에 입력되기 위해 String으로 받아 Char로 형변환 후 Int형 변환
    • 아스키코드 입력을 막기 위해 intplayer[i] = player.charAt(i)-'0'; 사용
    • 형 변환을 위해 List를 사용하는 경우도 있는 것 같다.

2.3 프로그래머스 Java Lv.1

  • 시간복잡도 생각해보기
    • 반복문을 쓸때 for과 while중 고민하게 되는데 보통 for가 빠르다고 들었다. 찾아보니 for가 빠를 수 도있고, while이 빠를 수 도있다. 주어진 환경에 따라 다르게 판단해야 하는 것이 옳다고 한다.
      • btw i++(후위)보다 ++i(전위)가 더 빠르다고한다.
      • 찾아보니 이경우는 1. 내부 타입의 경우 속도는 같다. 2. 객체의경우 전위연산자가 빠르다
  • 입출력 외에 연산시에도 형 범위를 넘지 않을까 생각해보기



3. Goals

  • Java 문법 종합 3주차, Java 문법 종합 4주차, Java 문법 종합 5주차 다시 학습하기
    • Object 클래스 이해하기
    • Wrapper 클래스에 대해 이해하기
    • 클래스, 인스턴스, 인터페이스 이해하기
  • 프로그래머스 Java 문제 풀기

0개의 댓글