분류 전체보기
Dependency Inversion Principle - 의존관계 역전 원칙에 대해서
객체지향 설계 SOLID 5원칙 중에서 마지막 원칙에 해당하는 DI (Dependency Inversion Principle)에 대해서 알아보자. 객체지향적 설계에는 의존관계가 생기기 마련이다. 각 클래스는 단일 책임 원칙에 따라 하나의 책임만 져야 하고, 각 클래스가 결합돼 프로그램이 구동된다는 것을 보면, 어떤 클래스가 다른 클래스에 의존하는 것은 당연하다. class Dog: def speak(self): print("Bark") class Cat: def speak(self): print("Meow") class Zoo: def __init__(self): self.cat = Cat() self.dog = Dog() def speak_all(self): self.cat.speak() self.do..
[Codeforces] Round #773 Div. 2
요즘 코드포스를 돌리고 있는데, 어렵다,, Div2 4개 푸는 걸 목표로 달리고 있다만, 계속해서 ABC를 풀거나 ABE를 풀거나(???)... A. Hard Way 삼각형이 주어졌을 때, $(0, x)$ 점에서 삼각형에 닿지 않는 변의 길이를 구하는 문제이다. 그림을 몇 번 그려 보면, 삼각형의 한 변이 x축에 평행하고, 나머지 한 점이 그 변보다 아래에 있는 경우, x축에 평행한 변은 닿을 수 없다. 다행히 닿지 않는 변의 길이를 구하면 되니, 저 경우면 변의 길이를, 그렇지 않으면 0을 출력하면 된다. B. Power Walking $N$ 개의 파워업을 적당히 나눠서, 나눈 그룹마다 unique한 원소의 개수의 합을 최소화하는 문제이다. 이 때, $1$ 부터 $N$ 까지의 정수 $K$ 에 대해서, ..
[파이썬 | Python] Mutable object, Immutable object
파이썬의 모든 것은 객체(object)이다. 거의 모든 객체는 속성(attributes)과 메서드(methods)로 이루어져 있으며, 객체끼리의 식별은 id(object)를 통해서 한다. id가 같다면 동일한 객체, 그렇지 않으면 다른 객체이다. id는 해당 객체를 가리키는 유일한 상수(unique constant)이며, 객체가 서로 같은지 비교를 위해서는 $==$ 가 아닌 is 를 사용한다. C언어의 포인터와 같은 개념이지만, 실제로 id가 가리키는 것이 메모리의 주소를 의미하는 것은 아니다. 객체는 변경 가능하거나, 그렇지 않다. 이것이 mutable object와 immutable object의 차이이다. 쉬운 예로, a = "abc" a.replace("a", "x") # a는 여전히 "abc"이..
[깃 | Git] Udacity Git Commit Message Style Guide - 깃 커밋 메시지 일관성있게 쓰기 (스타일 가이드)
커밋 메시지가 보기 좋아야 (일관성있고 체계적으로 작성해야) 나중에 다시 보았을 때 어떤 기능을 추가했는지, 어떤 버그를 고쳤는지 알기 편하다. 최근에 코드를 체계적으로 작성하기 위해서 Java, Python의 Style Guide를 참고했었는데, 커밋 메시지에도 가이드라인이 있다! 오늘은 그 중에서 유다시티의 커밋메시지 스타일가이드를 소개한다. - Commit Message Structure (커밋 메시지 구조) 커밋 메시지는 빈 줄로 나뉘어진 세 가지 파트로 구성된다. title, body(optional), footer(optional) 레이아웃은 아래와 같다. type: Subject body footer - The Type (커밋 타입) 커밋 타입은 제목(title)에 해당하며, 아래 중 하나이..
[백준 | BOJ] 문제풀이
알고리즘 공부하는 소모임이 있다! 나도 감 잃지 않으려고 가입해서 공부는 계속 열심히 하려고 하는 중. 오늘 20-22시까지 문제풀이를 적어뒀는데, 기록해 두려고 블로그에도 공유. 문제 목록은 아래와 같다. A: 정육각형과 삼각형 https://www.acmicpc.net/problem/14264 B: 가희야 거기서 자는 거 아니야 https://www.acmicpc.net/problem/21771 C: Router https://www.acmicpc.net/problem/15828 D: 점프왕 쩰리 (Small) https://www.acmicpc.net/problem/16173 E: 쇠막대기 https://www.acmicpc.net/problem/10799 F: Ocean View (Large) h..
[백준 | BOJ] Good Bye, BOJ 2021! 후기 및 풀이 (ABCD)
백준에서는 연말에 굿바이 백준, 연초에 헬로 백준(굿모닝 백준) 행사가 있다. 2021 백준 마무리할 겸 문제풀이. 대회에서는 2솔브, 끝나고 CD 업솔빙까지 했다. A. 2021은 무엇이 특별할까? $N$ 범위가 $10,000$이다. 소수를 쭉 늘어놓고, 두개를 미리 곱해두고 이분탐색해서 풀었다. 사실 이분탐색은 필요가 없는데. 원소 개수가 30개가 안 된다. 배열을 한 바퀴 돌 걸. $N = 10,000$일 때 103까지 넣어둬야 하는데, 넣지 않아서 WA, 테스트한답시고 넣은 코드를 안 없애서 WA. 자잘한 실수를 많이 했다. 제출 전에는 꼭 체크하자. B. 예쁜 케이크 대회 중에는 OEIS의 힘을 받아서 풀었다. 손으로 줄줄 쓰다가 뭔가 규칙이 있는 것 같아서 넘겼다. 증명은 아래와 같다. $N ..
42서울 (42SEOUL) 온라인테스트 후기
1학년을 마치고 공군 입대, 9월말 전역전 휴가 나와서 본격적으로 어떤 공부를 하면 좋을까 고민. 다양한 코스들을 접하고 들어보는게 좋겠다고 생각했다. 여럿 있었지만 내 눈길을 끌었던 건 삼성 SSAFY, 우아한형제들 우아한테크코스, 이노베이션아카데미(정부) 42서울. SSAFY는 4년제 졸업자 및 졸업 예정자에게 지원자격이 주어져 나에게는 해당이 안 됐고, 우아한테크코스는 다음주 수요일(11/3)에 접수마감이라 고민중에 있다. 서울42에서는 현재 모집중이 아니다. 그래도 상시 온라인 테스트 결과를 통해 교육과정에 입과할 기회를 주기에, 테스트를 한 번 봤다. 테스트는 4분, 2시간이 소요되는 두 가지의 게임이 전부이다. 한 번 보고 나면 다시는 지원할 수 없다는 게 긴장되는 데 한몫했다. 4분이 걸렸던..
[백준 | BOJ] 가희와 함께 하는 2회 코딩 테스트 후기
저번에 재밌게 풀었던 시리즈 대회가 열렸다. 1회때와 같이 문제들이 재밌다. 처음 생각한 풀이와는 다르게 생각하는 문제들도 있었다. 1시부터 바짝 참여하지는 못했지만, 5문제를 풀었다. 풀이는 아래. 가희와 함께 하는 2회 코딩 테스트 www.acmicpc.net 1. 가희와 파일 탐색기 문자열 관련 문제를 풀 때면 파이썬밖에 못 하는 나를 조금은 이해할 수 있게 된다.. 단순 정렬 세 번으로 문제를 해결했다. 우선순위의 반대순서대로 정렬을 진행하면, 우선순위를 모두 만족하게끔 정렬할 수 있다. 파일명과 확장자로 나눠 입력받고, 지원하는 확장자들을 dict 를 통해 관리한 뒤, key 를 각각 확장자, 지원 여부, 파일명 순서대로 정렬을 세 번 한다. 2. 가희와 키워드 이 문제도 브루트포스로 해결했다...
[2021 Dev Carnival] 데브카니발 2021 코딩테스트 금손 배지 후기 (문제 복기)
goorm.io에서 진행하는 2021 Dev Carnival : 데브 카니발에 참가했다 ! 5월 22일에 진행됐던 코딩테스트였는데, 얼마 전에 테스트 결과가 메일로 날아왔다. 잊고 있었는데 다시 생각나서 글을 쓴다. 테스트를 하면서 작성한 코드를 따로 저장해두지는 않아서 정확한 코드를 가지고있지는 않다. 기억나는 대로 문제를 복기해봐야겠다. 1번 문제는 단순구현 문제였다. 사람마다 먹을 수 있는 음식 양이 정해져 있고, 음식을 순서대로 먹으며 양을 넘는 사람들의 순서를 출력하는 문제였다. 배열 돌려가면서 빠르게 해결했었다. 2번은 구현이 조금 힘들어보여서 3, 4번을 먼저 봤었다. 3번은 보자마자 DP라는 생각이 들어서 도망쳤고, 4번 문제를 붙잡았다. 단방향 그래프가 주어지고, 한 번 정점을 방문할 때..
[백준 | BOJ] 가희와 함께 하는 1회 코딩 테스트 후기
요즘 백준에서 문제를 좀 풀고 있다. 어려운 고급알고리즘보다는 대회나 코딩테스트에서 자주 보이는 알고리즘 위주로 연습하려고 한다. Codeforces의 Round나, 백준의 대회나, Atcoder의 Contest 모두 참 좋지만, 신분이 군인인지라 쉽게 응시하지 못하고 있다. 가희와 함께 하는 1회 코딩 테스트 www.acmicpc.net 오늘 괜찮은 시간대에 대회가 열려서 참가하게 됐다. 문제들은 재밌었고, 다양한 알고리즘들이 문제셋에 녹아있어서 이렇게저렇게 풀어보기도 했다. 공지사항에서 미리 "빠른 입출력"을 사용하라고 조언했었는데, 꽤 테스트케이스들이 무거운 모양이다. 파이썬으로 힘겹게 돌아갔다. 저번 숙명여대 SMUPC에서는 2문제만 풀고 대회를 마무리했었는데, 이번 대회에서는 8문제 중에서 6문..