코딩/TIL

TIL #210107

나동 2021. 1. 7. 23:11

📚 TIL


자바 객체 지향 프로그래밍

 

🎉 드디어 자바 객체 지향 프로그래밍 토픽 끝!! 복습 필수다 🎉

 


 

 

1. 몬스터 가방 안에 담기

 

- 혼돈의 코딩.. HashMap과 ArrayList를 겹쳐서 쓰다니!! 넘나 어렵다

- 문제를 풀지 못해 내 코드와 비교할 수가 없어서 이 문제의 포인트 몇 가지를 정리했다!

 

(1) pokemons 변수 생성

 

- 하나의 key에 여러 value를 담기 위해서 key에 대응하는 value를 ArrayList로 했다.

 

private final HashMap<String, ArrayList<Pokemon>> pokemons = new HashMap<>();

 

(2) HashMap에 인스턴스 넣기

 

- 새로운 key 값인 경우 ArrayList를 만들고 값 추가

- 이미 같은 이름의 key가 존재하는 경우 기존의 ArrayList에 값 추가

- getPokemons 메소드 : name이라는 이름의 pokemon을 모두 가져오는 메소드

 

public void add(Pokemon pokemon) {
    String name = pokemon.name;
    if (getPokemons(name) == null) {
        pokemons.put(name, new ArrayList<Pokemon>());
    }
    getPokemons(name).add(pokemon);
}


(3) pokemon 중 cp가 가장 큰 pokemon 가져오기

 

- HashMap에서 모든 key에 해당하는 ArrayList를 확인해야 함

- getStrongest(String name) : name 이름의 pokemon 중 cp가 가장 큰 pokemon을 가져오는 메소드

 

public Pokemon getStrongest() {
    Pokemon strongest = null;
    for (String key : pokemons.keySet()) {
        Pokemon p = getStrongest(key);
        if (strongest == null || p.cp > strongest.cp) {
            strongest = p;
        }
    }
    return strongest;
}

 


 

 

2. 영화관 예약 시스템 pt.1 - 영화관 구축

 

- Seat 클래스에서 isOccupied() 메소드를 구현하는 법을 몰랐다.

- 답은 예약된 자리에 이름을 넣는거니까 자리의 이름이 null이 아닌지 확인하는 것이다.

 

public boolean isOccupied() {
    return name != null;
}

 

- Theater 클래스 생성자 만들기는 3가지 과정이 있다.

 

(1) 파라미터로 받은 열과 행의 수에 해당하는 2차원 배열을 만들기
seats = new Seat[rowCount][colCount];

(2) Seat 클래스의 인스턴스들로 배열을 채우기
this.rowCount = rowCount;
this.colCount = colCount;

(3) 파라미터로 받은 변수들의 값을 각각 동일한 이름의 내부 인스턴스 변수에 넣기
for (int i = 0; i < rowCount; i++) {
    for (int j = 0; j < colCount; j++) {
        seats[i][j] = new Seat();
    }
}

 


 

 

3. 영화관 예약 시스템 pt.2 - 예약, 취소

 

- 이번 과제는 매우 잘 해결했다!! 짝짝짝

- 코드를 더 깔끔하게 쓰는 연습을 하면 될 것 같다

- 아래는 구성하면서 실수했던 점들!

 

배열의 인덱스는 0부터 시작한다! 1번부터 매긴 열번호에는 -1을 해주어야한다
equals는 null 값과 비교할 때 NullPointerException 오류가 난다.
이번 과제에서는 값이 null인지부터 확인해야 했다!

 


 

 

4. 학점 계산기

 

- 하다하다 답이 안나와서 질문게시판을 참고해서 코드를 작성했다.

- 파라미터를 3개나 받길래 헐.. HashMap 안에 HashMap을 넣으라는 건가??

- 아무리 써도 오류가 나고.. 생성자까지는 만들었는데 그 뒤에 코드 구성이 안돼서 막혔다.

- 해답에서는 그냥 ArrayList를 만들어서 그 안에 Course를 넣었다.

- 나도 처음엔 그렇게 했는데 이래도 되나?해서 계속 고쳤는데 그래도 되는구나..

 


 

 

5. MP3 플레이리스트

 

- 클래스 3개에 작성했는데 Artist 클래스는 잘 적어서 사진은 생략했다

- 모르겠는 두가지를 찾아보고 풀었다 Main 클래스를 보고 차근차근 진행했더니 해결이 되었다!

- 학점계산기 만들때는 막막했는데 이제 조금은 객체 지향이 이해가 가고 있나보다

- 파라미터로 artist를 받을 때  Artist artist;로 변수 선언을 해주면 된다.

- toString 메소드를 Override해서 출력한다.

 


 

😁 오늘 한 일


 

📕 코드잇 공부하기

- 문제를 푸는 데 시간이 너무 오래 걸려서 며칠째 자바만 공부 중이다!

- 그래도 어제 3시간 걸려서 못푼 문제같은건 없어서 다행이다.

- 한 문제에 너무 시간을 많이 쓰는 것이 배우는 데 더 걸림돌이 된다는 생각이 들었다.

- 그래서 사람들의 질문을 참고해서 문제를 풀고 있다.

- 일단 프론트엔드쪽으로 공부를 하기로 했으니 자바 기초까지 해놓고 얼른 넘어가야겠다

- 목요일이라 참을 수가 없어서 메이플을 했다.

- 대신 이번주는 일요일도 빡공이다!

 

🎻 바이올린 배우기

- 오늘은 두 줄을 쓰면서 음악같은 음악을 연주했다.

- 현을 바꿀 때 손이 느려서 소리가 깔끔하지 못하게 난다! 연습을 더 해야겠다

- 바이올린은 배우면 배울수록 더 재밌는 것 같다

 

🥣 콩나물국밥 먹기

- 오늘은 학원 레슨 끝나고 삼백집에 가서 콩나물국밥을 먹었다.

- 싱겁지도 짜지도 않고 넘 맛있었다!! 오늘 엄청 추웠는데 몸이 따뜻해지는 맛이었다

- 반찬도 너무 맛있다!! 깍두기랑 젓갈 둘다 대박이다 ㅠㅠㅠ 국물까지 먹었다 ㅎㅎ

 

 

🍁 메이플하기

- 오늘은 대박 패치가 있어서 메이플을 했다. 뷰티 어워즈랑 코디 어워즈가 캐시샵에 나왔기 때문!!

- 뷰티어워즈 신나게 돌렸다 애들이 너무 예뻐졌다!!!

- 오늘의 최종 결과 : 1 페르, 1 루시드, 1 버블리, 1 조용한눈, 1 수호, 2 갈고리, 2 홍차소녀, 2 루어

- 왜이렇게 골고루 나오지? 근데 아직 원하는건 다 안나왔다!!! 아잉 내놔!!! 테디 내놔!!! 아등 내놔!!!

- 마일리지 모아서 투명 템들 사줘야되는데 다 썼다..

- 코디 어워즈는 메소 모아서 사야겠다ㅠ 뭐살지도 고민해봐야지 ㅎㅎㅎ

 

'코딩 > TIL' 카테고리의 다른 글

TIL #210109  (0) 2021.01.09
TIL #210108  (0) 2021.01.08
TIL #210106  (0) 2021.01.06
TIL #210105  (0) 2021.01.05
TIL #210104  (0) 2021.01.04