오늘 풀어볼 문제는 HashMap과 ArrayList를 이용해서 포켓몬들(...)을 담을 가방을 만드는 것이다.

 

포켓몬을 담을 PokeBag 클래스를 만들고, HashMap과 ArrayList를 이용해 중복되는 포켓몬도 담을 수 있게 해주는 것 같다. 

 

1. 

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

String으로 포켓몬 이름을 받고, 중복되는 포켓몬을 담을 수 있게 ArrayList를 value로 받아서 HashMap을 선언해준다.

 

2.

    public ArrayList<Pokemon> getPokemons(String name) {
        return pokemons.get(name);
    }

name 이름을 갖고 잇는 포켓몬을 모두 가져오는 메소드... 라고 하는데, 왜 ArrayList 형이지?? 했는데 리턴값이 ArrayList니까...... 왜 이런것도 모르나 하고 살짝 현타올뻔했다. 

 

3. 

    public void add(Pokemon pokemon) {
        String name = pokemon.name;
        
        if(getPokemons(name) == null){ // HashMap에 이름이 없을 때
            pokemons.put(name, new ArrayList<Pokemon>); // 해시맵에 이름과 배열을 넣어준다.
        }
        getPokemons(name).add(pokemon); // 이름에 해당하는 value에 pokemon을 넣어준다.
    }

1에서 구현한 해시맵에 Pokemon을 넣어주는 메소드 이다. 먼저 String name으로 Pokemon이름을 받아와서, getPokemons 메소드를 이용하여 해시맵에 이름이 있는지 없는지 확인해준다. 만약 없으면 해시맵에 추가해주고, getPokemons를 다시 이용하여 pokemon을 put 해준다. 

 

4. 

이번에 구현할 메소드는 name이 같은 포켓몬 중 cp가 가장 큰 포켓몬을 구하는 건데, 처음에는 ArrayList를 받아와서 for문에 Pokemon이 아니라 cp를 넣어서 비교할려고 했는데 그러면 포켓몬이 아니라 cp를 구하는게 되어버리므로 다시 짰다......

    public Pokemon getStrongest(String name) { //name 이름의 포켓몬 중 cp가 가장 큰 포켓몬을 가져오는 메소드
        ArrayList<Pokemon> pokeList = getPokemons(name); // 포켓몬 리스트 받아오기
        if(pokeList == null){
            return null;
        }
        Pokemon strongest = null;
        
        for(Pokemon pokemon: pokeList){
            if(strongest == null || pokemon.cp > strongest.cp){
                strongest = pokemon;
            }
        }
        return strongest;
    }

그래도 접근한 방향은 맞았으니까... 라고 합리화해본다.

 

5. 

4번을 내부적으로 호출해서 가지고있는 포켓몬 중 cp가 가장 큰 포켓몬을 가져오게 해야한다. 굴러가라 머리머리

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

이번에도 cp로 할뻔했으나.... 주어진 템플릿에 메소드의 반환형이 Pokemon인 것을 보고 간신히 제대로 했다. 

 

 

그리고 결과는!!!!!!

 

xx왜안되냐

 

배고프니까 내일 고쳐야지......

'210525~220812' 카테고리의 다른 글

#45 영화관2 210727  (0) 2021.07.27
#44 zzzzzzzzzzㅋㅋㅋㅋㅋㅋ 210725  (0) 2021.07.25
#42 3학년 2학기 시간표 210719  (0) 2021.07.20
#41 HashMap 복습2 210717  (0) 2021.07.18
#40 생존신고 210716  (0) 2021.07.17

오늘 강의계획서 나왔다. 대면 비대면이 얼마냐에 따라 자취가 결정된다… 는 공부할데 없어서 자취는 차피 해야함ㅎㅋ

생각보다 비대면이 많이 없어서 놀랍다고 할까…… 대면 비대면 병행하는게 대부분이지만…

3학년 2학기에 전선이 많아서 미리 들어놓을까 라는 고민을 잠깐 했지만… 졸업학점은 140이고… 나는 105학점 들었고… 35학점을 3학기 나눠서 들으면 되고…
그래서 18학점만 듣기로 했다. 교양 하나 넣어서 전공은 15학점.

공학인증이 날아간 현상황에는 공학인증 졸업요건보다 소프트웨어 졸업요건이 더 중요해졌다. 발표와 토론도 4학년 1학기에는 꼭 들어야 졸업한다……. 아 인생

2학년 때부터 전선 들을수 있는거 무작정 죄다 시간표에 때려넣은 보람이 고학년 되가면서 두드러지는 것 같다. 4학년 2학기에 캡디 하나만 듣는다 치면 2학기동안 32학점, /2하면 16학점, 이번학기 18 들으면 4학년 1학기에는 14학점만 들으면 되는거시다…! ㅎㅎㅎㅋㅎㅋㅎㅎㅋㅎㅋㅎㅎㅋㅋㅋㅋㅋ

신나네… 빨리 취업하고싶다

'210525~220812' 카테고리의 다른 글

#44 zzzzzzzzzzㅋㅋㅋㅋㅋㅋ 210725  (0) 2021.07.25
#43 HashMap 복습3 210722  (0) 2021.07.23
#41 HashMap 복습2 210717  (0) 2021.07.18
#40 생존신고 210716  (0) 2021.07.17
#39 HashMap 복습1 210713  (0) 2021.07.14

안녕하세요 말하는 호구마…가 되지 않기위해 돌아왔읍니다.

강의만 봐서는 잘 이해가 안돼서 위키독스에서 점프투자바를 찾아봤읍니다.


……

모르겠네여(쿨럭
사실 점프투자바엔 HashMap은 잘 안나와있고 그냥 Map 내용만 나와있어서 크게 도움이 되지는 않았다.

그래서 정답 보고 풀었던 문제를 다시 풀면서? 코드 해석하면서? 알아보도록 하겠다
문제는 영어사전 만들기 이다. 사전에 영어 단어와 한글 뜻을 쌍으로 넣어서 찾는 문제라고 할 수 있겠다.

HashMap<String, String> dict = new HashMap<>(); // HashMap 선언, key와 value 모두 자료형 String

public void addWord(String enWord, String koWord){ // 앞에서 선언한 HashMap dict에 영어 단어와 한글 뜻을 key와 value로 넣어주는 메소드
dict.put(enWord.toUpperCase(), new String(koWord)); // 사실 이부분이 가장 이해가 안되는 부분 중 하나다. 일단 대소문자에 관계없이 단어를 추가하기 위해 toUpperCase()를 사용한다는 것은 알겠다. 그런데 ‘new String(koWord)’ 부분이 이해가 잘 안된다. 지금은 넘어가고 구글링 긔긔
}
public String find(String findWord){ // key인 영어 단어를 넘겨서 한글 뜻을 찾기 위한 메소드
return dict.get(findWord.toUpperCase()); // 여기가 처음에 틀렸던 부분인데, key마다 value가 한개인 것을 생각 못하고 일일이 찾아주려고 했다. 처음에 사전에 입력할 때 toUpperCase()를 사용해서 대문자로 넣어줬기 때문에 찾을 때도 toUpperCase()를 써서 해당 단어의 뜻을 리턴하는 간단한 코드였떤 거시다.
}

이상이 WordDictionary 파일에 있었던 주요코드. 급하게 하느라 제대로 이해도 못하고 우당탕탕 넘어갔었는데 천천히 읽어보니까 이해가 된다. 역시 답을 찾아보는건 나쁜게 아니다. 답을 보면서라도 이해하려고 노력하지 않는게 나쁜거지.. 답만보고 대충 닥친 상황만 무마하는건 최악이고.

일단 대충 훑어봤으니 아까 넘어간 부분을 다시 알아보도록 하자. 강의에서도 new String(…)을 써주던데 대체 이유가 뭘까?
내일로 넘기고 싶지만 내일의 나는 분명 탱자탱자 놀고싶어 할테니 오늘의 내가 고생 좀만 더 하자. 내일의 나는 돈많은 백수가 하고 싶을테니 그냥 백수인 오늘의 내가 힘내자!! 아자!!!!

사실 구글링 해봐도 잘 안나오(기는 개뿔 그냥 내가 구글링 잘 못하는ㄱ)기 때문에 들었던 강의로 가서 qna를 찾아보니 나처럼 value에만 생성자를 써준 이유가 뭔지 궁금해 하는 사람이 올린 글과 답변이 있었다. 해당 답변을 인용해보도록 하자.

먼저 질문은 ‘value 값에 생성자를 써주는데 꼭 써줘야 하나요?’ 이고,
답변은 ‘꼭 써줘야 하는건 아니다. key에 넣은 문자열과 value라는 이름을 가진 객체와 연결시켜 HashMap에서 get 메소드를 통해 원하는 value를 가져욜 수 있게 쌍으로 묶어준 것’…. 이라고 한다.
대충 이해해 보자면 문자열과 문자열을 묶어놓은게 아니라 문자열과 koWord라는 이름을 가진 객체를 연결했다는 건가? 아직 알쏭달쏭하다. 그래도 뭔가 알거같음


오늘 글 형식이 왜 이따위냐면 노트북으로 로그인 하기 귀찮아서 아이패드에 티스토리 깔아서 뚜따다다다다다다다다닫 하고있기 때문ㅋ ㅋㅋㅋ ㅋ
나중에 다시 보고 못알아처먹겠으면 알아서 수정하겠지? 수고해라 ㅇ.<
아 뜬금없지만 어제 엄빠가 티비로 유튜브 보는데 광고에 레드햇 나와서 이마짚으면서 방으로 도망쳤따. 인생……

'210525~220812' 카테고리의 다른 글

#43 HashMap 복습3 210722  (0) 2021.07.23
#42 3학년 2학기 시간표 210719  (0) 2021.07.20
#40 생존신고 210716  (0) 2021.07.17
#39 HashMap 복습1 210713  (0) 2021.07.14
#38 앞으로의 계획 정리 210709  (0) 2021.07.09

분명 내일 하려고 했는데.. 했는데!!!!(오열

장염인지 소화불량인지… 병원에서도 명확하게 안알려줘서 모르겠ㄷㅏ…ㅋ.ㅎㅋㅋㅋ
그제 낮잠 자고 일어났더니 몸 상태가 별로여서 알바도 땡땡이 치고 쉬었는데… 밤에 좀 괜찮아 진거 같아서 목마른 김에 오렌지 주스 한모금 마셨을 뿐인데…… 속이 뒤집혀서 ㅎ.ㅎㅎㅎ.ㅎ.ㅎ… 다음날 아침 새벽 6시에 깨서 진통제 2알 먹고 고통에 바닥을 기고 있으니까 동생이 놀라서 학교 가기 전에 엄마한테 언니좀 댇고 병원 가라고 했다고 했다나 뭐라나…(먼산

병원가서 주사 한방 맞고 어제 하루 종일 죽먹고 약먹고 자고 반복했더니 좀 나아졌다. 덕분에 이틀 알바 푹 쉬어서 오늘 바쁜것도 버틸 수 있었다는 해피? 엔딩……

예ㅔ… 건강의 소중함을 다시 깨달았고…… 오늘까지만 쉬고 내일은 정말로 해시맵 하겠읍니다…. 제발……

사실 그제 좀 괜찮았을때 좀 해볼라고 노트북 켰는데 켜지는 사이에 주스먹고 속이 뒤집어져섴ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 켜지자마자 끔(……)

지금도 간만에 블루투스 키보드 꺼낸 김에 노트북 키기 싫은 김에 아이패드로 작성하는 중이다. 왜 모바일은 티스토리 글 못쓰는거야? 무조건 어플로 써야하는 이런(대충 불평불만)
그래도 바로 카카오톡 로그인 돼서 편한거같기도……


약먹어서 졸립다 내일은 진짜 공부한다 공부 안하면 나는 말하는 호구마다

'210525~220812' 카테고리의 다른 글

#42 3학년 2학기 시간표 210719  (0) 2021.07.20
#41 HashMap 복습2 210717  (0) 2021.07.18
#39 HashMap 복습1 210713  (0) 2021.07.14
#38 앞으로의 계획 정리 210709  (0) 2021.07.09
#37 기분이가 좋지 않다 210708  (1) 2021.07.09

자바 강의 중에 못푼 문제를 마저 풀기 위하여 해당 부분을 복습하기로 하였다. 

...사실 코스 완강하려고 애매하게 아는건 다 처리해버렸고...... 진짜 모르는 것만 다시 볼것이다. 

 

일단 HashMap부터

 

에휴...

 

 

1. 원소와 키 같이 저장

2. <키 자료형, 원소 자료형>

3. put 사용

4. arraylist와 다르게 인덱스 문제x

5. 키 하나당 원소 하나만 저장

6. keyset으로 hashmap원소 받아올 수 있다

 

.......뭐가 달라진거지?

 

아 허리아파 gg

내일은 알바 안가니까 내일 마저한다 진짜

'210525~220812' 카테고리의 다른 글

#41 HashMap 복습2 210717  (0) 2021.07.18
#40 생존신고 210716  (0) 2021.07.17
#38 앞으로의 계획 정리 210709  (0) 2021.07.09
#37 기분이가 좋지 않다 210708  (1) 2021.07.09
#36 오늘의 뭔가 한거 210705  (0) 2021.07.06

원래 나는 0시가 넘어도 내가 자고 일어나지 않는 이상 하루가 끝나지 않았다라는 주의라... 평소같았으면 9일 말고 8일이라 썼을텐데, 오늘은 기분이가 좋지 못하므로 그냥 현재 날짜로 쓰겠다. 자고 일어나서 또 쓸지는 모르겠고......

 

아무튼 9월 2일에는 복학해서 개강할테고, 7월까진 알바할테니(......) 복학하기 전까지 해야할일 & 하고싶은일 정리해보는 시간을 갖고자 한다 와 ^ㅇ^!! 넘모 신나고................

 

1. 코드잇 수강

대코캠 수료를 못했으므로(^^7) 이용권은 8월 9일까지... 아직 수강중인 코스는 빌어먹을자바, 알고리즘 두개. 두개는 확실히 완강하고 기간이 남으면 다른 강의도 찾아보는걸로......

 

2. 자취방 구하기

대면수업을 할지 안할지 모르겠으나 공부나 수업이나 팀플 생각하면 방 있는게 나을 것이다... 청년주거급여 같은 것도 있으니까 찾아보고...... 으ㅓㅓ어

 

3. 복학신청

최대한 복학생이고 싶어서,,, 아직 신청 안했다. 1일 부터였고, 8월 31일 까지였던가? 장바구니가 26일 부터니까 이 전에 해야것지....,.,.

 

4. 노션

프로로 업그레이드 다 해놨으니 강의 보면서 뚜따따따다다다닫ㄷ 해보고 싶은데, 그냥 유튜브로 보기로 했다. 인프런으로 들어가려면 노트북 없을때 귀찮을거 같아서....(밍기적

 

5. 건강검진

올해가 홀수년생 건강검진이라 네X버로 공문 왔었다. 방학중에 집근처 대학병원으로 건강검진 받으러 가야지 룰루

음 그 전에 엄마가 한의원 댇고갈거 같긴 하다. 최근 엄마가 너무 피곤해한다고 걱정하기도 하고...... 오늘은 아부지도 이마에 여드름*3 보시고 당신 드시는 비타민*3알을 쥐어주셨다......

 

6. 졸작

팀은 정해졌으니 주제만 정해서 공부를 우다다다다다다다다다닫ㄷ 플젝을 우어어어어어어어어어억

 

7. 하고싶은 공부

개인적으로 운영체제 공부를 따로 해줘야할 것 같다. 아무래도.. 크흠 학점때문에 들었던 수업이... 읍읍 그렇습니다. 이 외에도 구름edu에 저장해놓은 sql 강의나, 작년에 보던 sql 책도....(먼산

 

8. 건강관리

요즘 지뢰찾기(......)를 너무 열심히해서(......) 손모가지가 아프다(......). 손목이나 눈이나 목이나 척추나 체력이나 등등 신경 써야할 것도 많고 운동의 필요성을 절감하는중이다ㅏ...

 

 

에.... 생각나는건 이정도 인것 같고 세부사항은 나중에 정해야겠다...... 그럼 20000...

'210525~220812' 카테고리의 다른 글

#40 생존신고 210716  (0) 2021.07.17
#39 HashMap 복습1 210713  (0) 2021.07.14
#37 기분이가 좋지 않다 210708  (1) 2021.07.09
#36 오늘의 뭔가 한거 210705  (0) 2021.07.06
#35 Notion 회원가입(+학생 업그레이드) 210704  (0) 2021.07.04

오늘이 대코캠 마지막 날이었는데ㅡㅡ

 

코스 하나 완강 못해서 수료 못하게 되어버렸따☆

@#%@^#@&@#$^$@!!~~~%@#$

 

하... 진짜 맨날 열심히 했는데

뭐.. 그럴수있지....

요즘 알바때문에 힘들어서 그냥... 그러려니... ㅋ..ㅋㅋㅋㅋㅋㅋㅋ

아오 힘들어

 

그래도 막판에 완강 할라고 열심히 했다...... 못했지만

아직 못한 코스는 마저 해야겠다. 이용권 남은 한달동안...

 

근데 대코캠은 더 안할듯..ㅋㅋㅋㅋㅋ 이번에 못한게 트라우마돼서...?

 

에휴 인생...... 

 

오늘글은 이걸로 때워ㅓ야지...,,. 아 힘들어힘들어힘들다고복학도안했는데왤케힘드냐고나한테이럴거냐고내가뭘잘못햇냐고나좀그만부려먹으라고내가뭘더얼마나해야만족할거냐고아아앙아아아아아아아아아아앙아아아아아아아아아아아아악아아아아아아아아아아아아아아아아아아아아아아아아아아아아아아앙ㄱ복학하면그만부려먹냐고아니잖아취업하라매취업할려면공부해야되는데공부할시간주냐고지금나와서일하라매이게뭐냐고고고오오오오오오오오오오오ㅗ오오오ㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗㅗ

 

세상엿먹어라

에... 카드 셔플러 실습을 해야 하는데, 문제에서 요구한 변수와 메소드를 하나 빼고 다 작성 해놓긴 했다. 야매지만...

 

마지막 남은 하나는 ArrayList를 Random 클래스를 이용해서 셔플하는건데...

 

구글링 해봐도 Collection 쓰는것만 나온다....!!

 

과연 이문제... 풀릴수 있을 것인가...!(두둥

 

예. 그렇습니다. 

 

일단 대강 짜봐야 실행해보고 고치던가 말던가 할텐데...흠믐믐므

 

주어진 리턴 형식이 void라 새 ArrayList를 선언해서 리턴하는 것도 안되고, 으으으으ㅡ

 

진짜 대코캠만 끝나면 노션갖고 뚜따다닫딷닫 해야지 룰루

 

..사실오늘은 편의점이 너무 힘들어서... 편의점얘기로 10줄은 쓸수 있을거같지만 내일도 출근해야 하므로..(총총

+ Recent posts