분류 전체보기
-
아마추어에서 프로로: 글, 개발, 나아가 일을 대하는 태도의 변화Extracurricular Activites/글또 2024. 12. 26. 01:46
올 한 해, 부족함과 무기력을 많이 느끼며 힘든 시간을 보냈다. 글쓰기와 개발에서 마주한 문제는 물론, 잘하는 사람들과의 비교가 나를 짓눌렀다. 하지만 날 힘들게 하는 어려움을 극복하면 나의 무기가 된다는 확신 하나로 계속 부딪혔다. 신기하게도 문제를 직면하기로 결심하면서 해결을 위한 단서들이 보이기 시작했다. '잘 쓴 글'과 '좋은 개발자'의 핵심은 결국 '타인에게도 결과물의 가치를 전달할 수 있는가'에 달려 있음을 깨달았다. 이를 위해 피드백을 받아들이고, 단순하지만 확장 가능한 구조를 지향하는 자세를 키워나가고 있다. 그동안 내가 글쓰기와 개발을 대했던 자세와 피드백을 통해 느끼게 된 프로의 자세에 대해서 아래 표로 정리해봤다. 그리고 시련 → 문제 → 노력 → 통찰 → 방향 설정 순으로 2024..
-
테스트 자동화(1) - 자동 테스트의 필요성(feat.TDD)카테고리 없음 2024. 11. 10. 14:12
들어가며 테스트는 소프트웨어 품질과 장기적인 관점에서의 개발 생산성에 필수적인 과정이다. 하지만 단기적으로는 코드 작성 시간이 두배 가까이 들기도 하고 꽤 귀찮은 작업이다. 그럼에도 테스트는 중요하다. 작년 내내 나의 화두는 "테스트 자동화"였고, 테스트코드와 TDD에 대한 고민과 적용을 거듭해왔다. 이런 경험을 바탕으로 아래와 같이 3번에 걸쳐서 테스트 자동화에 대한 포스팅을 연재할 예정이다! 1. 테스트 자동화(1) - 자동 테스트의 필요성(feat.TDD) 2. 테스트 자동화(2) - 테스터블한 코드란? 3. 테스트 자동화(3) - TestContainers를 이용한 테스트 자동화 도입기 자동 테스트는 코드 기반의 테스트로, 테스트코드를 논하자면 TDD가 빠질 수 없다. TDD는 테스..
-
[글또 10기] 마지막 기수를 시작하며Extracurricular Activites/글또 2024. 10. 13. 16:41
글또가 10기로 막을 내린다고 한다. 8기부터 했었는데 저번 기수인 9기 때는 패스도 많이 쓰고 해서 너무 아쉬웠다. 다시는 오지 않을 글또에서의 경험을 어떻게 하면 더 잘 마무리할 수 있을지,, 그 다짐을 적어본다. 작년 이맘때쯤 이직을 결심했는데, 현재 나의 스택인 파이썬 백엔드는 너무 마이너해서 선택의 폭이 너무 좁았다. 나만이 특화할 수 있는 분야가 명확히 있지 않는 이상, 자바공화국에서는 자바는 필수라는 것을 깨닫고 자바/코틀린 + 스프링 스택을 추가해야겠다고 생각했다. 그런데 아무리 할 게 많다고해도 현업과 병행해야하는 상황이었고, 더군다나 서비스 하면 웹인데 웹도 메인으로 다뤄보지 않아서 도대체 어디부터 어떻게 시작해야하는지 엄두가 나지 않았다. 그러던 중 항해라는 웹 백엔드 주니어 대상..
-
[프로그래머스] 멀리뛰기 # DPAlgorithm 2024. 9. 20. 21:51
문제 링크1. 문제 전체 칸 수 n이 주어질 때 1칸 또는 2칸을 이동해 n칸을 이동하는 경우의 수에 1234567을 나눈 나머지를 반환하는 함수를 완성하라. 2. 제한 사항1 3. 입출력 예 4. 첫 번째 풀이 - Python 결국 초기값만 다른 피보나치 수열이다. n이 2000 이하이므로 메모이제이션을 사용하지 않았다. 메모이제이션을 사용했을 때는 0.18ms, 사용하지 않았을 때는 최대 0.15ms가 소요되었다. def solution(n): MOD = 1234567 if n == 1: return 1 if n == 2: return 2 a, b = 1, 2 for i in range(3, n + 1): a, b ..
-
[프로그래머스] - 괄호 회전하기 # StackAlgorithm 2024. 9. 9. 23:30
문제 링크1. 문제 설명 대괄호, 중괄호, 소괄호로 이루어진 문자열 s가 매개변수로 주어질 때, s를 왼쪽으로 x칸만큼 회전시켰을 때, s가 올바른 문자열이 되도록 하는 x의 개수를 반환하라. 올바른 괄호 문자열이란 (), {}, [], {()}, {}[()], ... 와 같이 여는 괄호 뒤에 반드시 닫는 괄호가 오는 형태를 말한다. 2. 제한 사항0 1 3. 입출력 예 4. 첫 번째 풀이 - Python 스택의 LIFO 특성을 활용한다. 여는 괄호가 나오면 스택에 넣고, 그에 맞는 닫는 괄호가 나오면 스택에서 빼 줄 것이다.먼저, stack에 빈 리스트를 할당하고, opens 리스트에 {, (, [를 담아준다. closes에는 여는 괄호를 키로 갖고, 여는 괄호에 매칭되는 닫는 괄호를 값으로 갖..
-
[LeetCode] 436. Find Right Interval # Binary SearchAlgorithm 2024. 9. 8. 23:53
문제 링크1. 문제 설명 이중 배열 intervals가 주어진다. intervals의 요소 interval은 [start, end]로 구성되어있다. 반환해야할 answer의 i번째 요소는 현재의 end 값이 또 다른 interval의 start 값보다 작거나 같을 때, 최소값의 start를 가진 interval의 인덱스이다. 조건을 만족하는 start 값이 없다면 -1이 answer의 i번째 요소로 들어간다. 2. 제한 사항1 intervals[i].length == 2-10^6 각 interval의 start 값은 고유하다 3. 입출력 예 4. 첫 번째 풀이(시간 초과) - Python 문제의 조건을 그대로 구현했다. 결과는 시.간.초.과. 🤧 효율적으로 푸는 아이디어가 안 떠오른다..class..
-
[프로그래머스] 전화번호 목록 # HashAlgorithm 2024. 9. 8. 01:19
문제 링크1. 문제 설명전화번호를 담은 배열 phone_book이 파라미터로 주어질 때, 전화번호부에 적힌 전화번호 중 한 번호가 다른 번호의 접두어인 경우가 있으면 False를, 그렇지 않으면 True를 반환한다. 2. 제한 사항1 1 같은 전화번호가 중복해서 들어있지 않음 3. 입출력 예 4. 첫 번째 풀이(시간 초과) - Python 냅다 for문 두 번 돌려버렸다. 이중 중첩 반복문을 순회하면서 현재 전화번호가 비교 대상 전화번호와 다르고, 자신의 전화번호가 비교 대상 전화번호로 시작하는지 판단한다. 리스트를 동시에 두 번 조회하므로 시간복잡도 O(n^2)이다. 그리고 현재 전화번호가 비교 대상 전화번호와 다른지 판단해야한다는 의미는 자기 자신과의 비교를 불필요하게 수행하고 있다는 의미이다..
-
99클럽(3기) - 코테스터디 9일차 TIL # DPAlgorithm 2024. 8. 13. 00:22
프로그래머스 - 피보나치 수1. 문제 설명n번째 피보나치 수를 1234567로 나눈 나머지를 리턴하는 함수 solution을 완성하라. 2. 제한 사항2 3. 입출력 예 4. 첫 번째 풀이(런타임 에러) - Python런타임 에러가 발생했다. 재귀를 사용했기 때문에 n이 100,000에 가까운 숫자일 경우 스택 오버플로우가 발생했을 것이다. 1) 메모이제이션과 피보나치 수 계산을 위한 F 클래스 생성초기화 함수 __init__에서 F(0) = 0, F(1) = 1로 메모이제이션을 위한 딕셔너리를 초기화한다. 피보나치 수열을 계산하기 위한 함수 fibo에서는 self.memo에 있는 키인지 먼저 확인 후 없으면 피보나치 수를 재귀적으로 계산한다. 이 때, n이 충분히 커졌을 경우 발생 가능한 오..