Written by
Poogle
on
on
2021.08.07 TIL
새롭게 배운 것 Done
운동
독서
알고리즘
- BOJ - 13913. 숨바꼭질 4
- BFS로 풀이
- 이전에 풀었던 숨바꼭질 문제에 가장 빠른 시간 뿐만 아니라 이동하는 방법까지 구하는 문제였다.
from[]
이라는 배열을 두고 역추적하는 방식으로 이동한 방법을 구했다. 출력할 때는 단순 반복문(stack)으로 구하는 방식과 재귀로 구하는 방식 두 가지가 있었다.
- BOJ - 13913. 이모티콘
- BFS로 풀이
- 할 수 있는 연산 세 가지에 맞게 화면에 있는 이모티콘 개수와 클립보드에 있는 이모티콘 개수를 변화시키면서 풀이할 수 있다. 클립보드에 있는 이모티콘의 개수에 따라서 클립보드에서 복사하기 연산의 결과가 다르다는 점을 주의했어야 하는 문제였다. 그 아이디어를 생각해내지 못해서 실패
- BOJ - 13549. 숨바꼭질 3
- 가중치가 0 또는 1일 때 BFS로 풀이
- 큐 두개를 사용하거나 덱(보이지 않는 구분이 있다고 생각하고 앞 뒤로 넣어주면 됨)을 써서 풀 수 있다. 처음에 MAX 값을 잘못 지정해줘서 실패했다.
- BOJ - 1261. 알고스팟
- 위 문제랑 거의 비슷하다. 빈 방 -> 벽: 1, 벽 -> 벽: 1, 벽 -> 빈 방: 0, 빈 방 -> 벽: 0 이렇게 네 가지 경우의 가중치를 확인하고 이에 맞게 구현하면 된다.
코딩
모던 자바 인 액션 - Ch.1
- 챕터 1 정리
- 정리 포스트: 모던 자바 인 액션 Ch. 1
String
멘토 님의 깜짝 퀴즈
- ❓. A1.hashCode()와 A2.hashCode()의 값은 같을까 다를까?
- 같다. -> String에서
hashCode()
는 재정의되어 문자열 내용이 같으면 해시코드가 같음
- 같다. -> String에서
- ❓. A1 == A2의 결과는 true일까 false일까?
- false -> 주소 비교
- ❓. A1.equals(A2)의 결과는 true일까 false일까?
- true -> 값 비교
- ❓. String의 hashCode는 재정의되어있습니다. 왜 재정의 되어있을까요?
- 개발을 하면서 String을 HashXXX의 key로 사용하는 경우가 굉장히 많은데 만약 String의 hashCode가 오버라이딩 되어있지 않았다면 다음 2가지 중 하나의 상황이 발생
- 분명 같은 문자열을 넣었는데 서로 다른 key로 인식되어 각각 저장 + get으로 다시 값을 얻어올 때에는 저장할 때랑 같은 문자열인데도 불구하고 key가 각각 다름
- 모든 프로젝트에서 String을 상속하는 새로운 클래스를 만들고 hashCode를 오버라이딩하여 사용 (아마 이런식으로 매번 번거롭게 별도 클래스를 만들어줘야 함)
- 개발을 하면서 String을 HashXXX의 key로 사용하는 경우가 굉장히 많은데 만약 String의 hashCode가 오버라이딩 되어있지 않았다면 다음 2가지 중 하나의 상황이 발생
- ❓.
==
로 비교하는 것과equals
로 비교하는 것은 다릅니다. 이와 관련해서는 동등성과 동일성을 찾아보시기 바랍니다.- 동일성: 실제로 동일한 존재, 그 존재가 하나의 존재인지 비교하는 것 (==)
- 동등성: 같은 존재로 가정하는 것, 두 존재가 같은 등급인지 비교하는 것 (equals)
- 동일하거나 동등하면
hashCode()
에서 반환하는 값이 같다? - ⏩ 이 명제의 대우:
hashCode()
에서 반환하는 값이 다르면 동일하거나 동등하지 않다. -> 만약hashCode()
의 반환 값을 random하게 반환하도록 오버라이딩 한다면, 동일한 인스턴스라도 다른hashCode()
값이 나올 수 있음. 그러면 동일하지 않은 인스턴스인가? 그렇지 않음, ==으로 비교 시 true. -> 결론: 일반적으로 참이나 예외 케이스가 발생할 수 있는 명제
깨달은 점 FEELING
- 일요일에 있는 스터디를 위해서 모던 자바 책을 정리했다. 마침 데브코스 과정에서 이번 주에 람다, 스트림 등 자바 8의 새로운 기능들을 다루는 시간을 가져서 함께 병행하기 나쁘지 않았다. 책을 읽다 보니 병렬과 Stream에 관한 얘기가 많이 나오는데 아직까지 완벽히 이해된 것 같지는 않다. 스터디 하면서 질문들을 정리해야겠다.
- 멘토님이 내주신 equals와 hashCode 퀴즈를 풀면서 한 번 더 정리할 수 있었다. String에서 hashCode와 equals가 오버라이딩 된 이유에 대해 생각해보면서 헷갈릴 수 있는 부분을 짚고 넘어가서 유익한 시간이었다.