반응형

분류 전체보기 486

[호호 스터디] 다형성과 추상 타입_ 객체지향과 디자인 패턴 Chapter 3

호호 스터디에서 Chapter 3: 다형성과 추상 타입을 발표하기 전에, 미리 책을 읽고 공부한 내용을 기록한 포스팅이다. 이펙티브 자바, 오브젝트 책에 적힌 내용과 유사한 내용도 많이 있어, 함께 읽으면 좋은 시너지 효과를 낼 수 있을 듯하다! (이펙티브 자바 3판_아이템18, 19, 64) 다형성을 위한 인터페이스 다형성(Polymorphism)이란, 한 객체가 여러 가지 모습을 갖는다는 것을 의미한다. 즉, 한 객체가 여러 가지 타입을 갖는다는 것을 의미한다. 위 그림처럼 LottoGenerator에는 여러 방법이 있다. 자동으로 생성하는 방법과, 수동으로 생성하는 방법. 따라서 로또 생성 인스턴스 객체를 생성하려 할 때, 아래와 같이 두 가지 방법이 존재한다. LottoGenerator lotto..

null을 반환하지 말고 빈 객체, 또는 Optional을 반환하자

우아한테크코스 미션을 진행하면서, 그리고 이펙티브 자바를 읽으면서 null 반환의 위험성을 알게 됐다. 로또 미션을 진행하면서 로또 구매 방법에는 자동, 수동이 존재한다. 수동으로 구매할 것이라면 구매할 로또 번호들을 입력하고, 구매하지 않을 것이라면 생략해주자 수동 로또를 구매할 개수를 입력받을 때, 0이 아닌 특정 자연수값이라면 번호를 List에 담은 객체를 넘겨주면 되지만, 0이 입력됐을 경우, 두 가지 방법이 존재한다. null을 반환해준다. 빈 객체(Collections.emptyList())를 반환해준다. 1번 방법은 위험한 방법이다. null을 반환해줄 경우, 이를 사용하는 프로덕션 메소드에서 null일 때에 따로 처리하는 로직을 추가로 만들어주어야 한다. 그렇지 않을 경우, 우리를 자주 괴..

2022년 2월 10km 달리기 _ 이촌한강공원 ~ 뚝섬한강공원

날씨도 슬슬 풀리고, 러닝 뛰기 좋은 기온이 다가오고 있다! 최근 날씨가 따뜻하기 때문에 폴리에스터 재질 운동복(쫄쫄이) 위에 바람막이만 입어도 춥지 않게 편안하게 러닝을 뛸 수 있다~ Warming Up _ 3KM 인터벌 러닝 27일 일요일, 이날은 잠시 코딩을 내려놓고 야외에서 이촌 한강뷰를 구경하면서 러닝 동아리 멤버들과 함께 인터벌 러닝을 달려보았다. 동아리원들은 잘달리는 분도 있었지만, 처음 뛰시는 분도 계셨기 때문에 속도를 내지 않고 인터벌로 천천히 연습하면서 체력 증진을 목표로 달렸다. 이촌 한강 뷰가 너무 예뻤기 때문에 운동뿐 아니라 힐링도 챙길 수 있었던 기회 :) Burning _ 10km 러닝 이제 크루들과 헤어지고, 집으로 가려던 도중, 이촌에서 건대까지 거리가 약 11km 정도여서..

[220225] 우아한테크코스 4기 3주차 활동 후기

앞으로 1주 간격 또는 2주 간격으로 한주가 끝날 때마다 일기처럼 활동 후기를 작성하려 한다~ 요즘은 우테코에서 하는 활동들이 많아서 1주 간격으로 작성할 듯하다. 데일리 미팅, 그리고 정말 재밌었던 데일리 회식 첫주차에는 어색한 듯 만듯한 느낌이 있었지만, 지금은 다들 친해진 데일리 미팅 크루들! 아침에 10시부터 30분동안 데일리 미팅을 진행하는데, 처음에는 데일리 미팅 코치(선생님이라 생각하면 된다) 브리가 주도하는 데일리 미팅이었지만, 지금은 다같이 주도하는 데일리 미팅으로 바뀌기 시작했다. 수요일에 라쿤이 데일리 마스터로 주도할 때, ppt를 정성껏 만들어서 미팅 퀄리티를 엄청나게 높여놓았다. 라쿤의 주제는 밸런스 게임이었는데, 고양이 vs 강아지, 산 vs 바다, 후라이드치킨 vs 양념치킨과 ..

[220225][JAVA] 크리스와 페어 협업미션을 통해 배운 점 (로또(자동) 미션)

로또 1단계 미션을 크리스와 함께 진행하였다. 크리스는 보이는 라디오에서도 나와 같이 활동했고, 회식도 함께 진행한 덕에 서로 편하게 소통할 수 있었으며, 거주지도 서로 가까워 페어 미션동안 오프라인으로 만나면서 진행하였다. 이번 시간에도 페어에게 정말 많은 걸 배울 수 있었고, 크리스에게 java 개념들과 특정 구조에 대한 이점을 배울 수 있었다 :) 정규식 성능 개선 그 동안은 정규식 String만 따로 위에 빼준 다음에, String.matches()로 정규식을 비교해주었다. 그러나, String.matches()를 이용할 경우 아래와 같은 작업이 발생한다. matches 과정마다 Pattern.compile이 발생하는데, 이 때 Pattern.compile이 컴파일 과정에서 성능을 좀 많이 잡아먹..

[BOJ] 백준 1325. 효율적인 해킹 (Silver I)

스터디그룹 채점현황 둘러보다가 발견한 문제. 결론부터 까고 말하자면, 이 문제는 BFS/DFS 뿐만 아니라 SCC로도 풀 수 있고, 만약 이게 정해라면 Platinum IV 티어 정도 받았을 것 같다. 문제 풀기 전에는 티어 열람 기능을 꺼놓기 때문에, 처음 봤을 땐 되게 쉬울줄 알았던 문제인데, 막상 풀 땐 그렇지 않았던 문제이다. 시간제한이 5초나 돼서 단순한 방법으로 풀리지만, 꽤 배울 점이 많은 문제. 문제는 아래와 같다. https://www.acmicpc.net/problem/1325 sync_with_stdio(0); cin>>n>>m; while(m--){ int a,b; cin>>a>>b; v[b].push_back(a); } int M=0; for(int j=1;j>a>>b; v[b]...

PS/BOJ 2022.02.24

[220221] 호호 스터디_ 객체지향과 디자인 패턴 Chapter 2

데일리 미팅에서 호호 크루가 '객체지향과 디자인 패턴' 책 스터디를 주최하여 참여를 신청했다 :) 앞으로 호호 스터디를 통해 객체지향과 디자인패턴 책을 읽고 배우며 느낀 점들을 여기에 기록할 듯하다. 끝까지 완독하고 나면, 독후감 카테고리에 따로 포스팅을 작성할 예정이다. 객체지향을 선택한 이유 절차지향은 데이터 중심으로 이루어진다. 그리고 각 프로시저들이 그 데이터를 여러가지 방식으로 조작한다. 프로시저가 다른 프로시저를 사용할 수도 있고, 같은 데이터를 사용할 수도 있다. 그러나 위 경우의 문제점은, 요구사항이 수정됐을 때 발생한다. 일단 같은 데이터를 다루는 프로시저들이 많다보니, 데이터 타입이나 의미 변경이 발생하면 수정해야 할 프로시저도 많아진다. 거기에, 프로시저가 다른 프로시저를 사용하고 있..

[220220] ICPC Sinchon Winter Algorithm Camp Contest Open 후기

오랜만에 BOJ 대회에 참여해보았다! 신촌 지역 연합대학들은 ps/알고리즘 스터디들 서로 진행하고 매 해 겨울, 여름마다 대회를 연다. 나는 신촌 연합대학에 속하지 않기 때문에 open contest 참여자로 응시해보았다. 요즘 우테코를 하느라 백준을 많이 못해서 내 감이 얼마나 잘 유지되고 있는지 중간체크도 할 겸, 대회시작 40분 쯤 후부터 뒤늦게 참여해보았다. 꽤 만족스러운 결과였다 :) 물론, 등수가 높다고 꼭 잘하는건 아니긴 하지만, 풀 만한 문제들은 만족스럽게 잘 푼 듯하다. 참여 후기 / 느낀점 수학적인 능력을 많이 요구하는 느낌이었다. 운영진분들께서 다들 수학을 잘하시다보니 ㅎㅎ 초보자 입장에선 꽤 헤맬 듯한 문제들이 많았다고 생각한다. C번부터 초보자에게는 굉장히 어려웠을 것 같다고 생각..

[220218] 페어 협업미션 리팩토링 피드백 (레벨1 - 자동차 경주 미션)

우아한테크코스에선, 같은 미션이어도 1단계-구현, 2단계-리팩토링으로 나누어진다. 지난 포스팅에서 1단계-구현 피드백 포스팅을 다뤄보았으니, 이번엔 2단계-리팩토링 피드백 포스팅을 다뤄보려한다. 1단계-구현 피드백은 여기서 볼 수 있다. https://kth990303.tistory.com/262 [220211][JAVA] 페어 협업미션 리뷰어의 피드백_문자열 덧셈 계산기 저번에 알렉스와 함께 페어 프로그래밍을 진행한 '문자열 덧셈 계산기', '자동차 경주 미션'이 벌써 피드백이 올라왔다! 리뷰어님(이하 미르)께서 새벽 2시에 피드백해주셨던데, 미르의 성실함에 kth990303.tistory.com 2단계 - 자동차 경주 리팩터링 PR은 https://github.com/woowacourse/java-r..

[BOJ] 백준 12969. ABC (Gold I)

적당히 어려워보이면서 문제 이해가 쉬운 문제 찾다가 발견한 문제. 문제는 아래와 같다. https://www.acmicpc.net/problem/12969 12969번: ABC 첫째 줄에 문제의 조건을 만족하는 문자열 S를 출력한다. 가능한 S가 여러 가지라면, 아무거나 출력한다. 만약, 그러한 S가 존재하지 않는 경우에는 -1을 출력한다. www.acmicpc.net N N >> K; memset(d, -1, sizeof(d)); if (!K) { for (int i = 0; i < N; i++) { cout

PS/BOJ 2022.02.17
반응형