전체 글

전체 글

    2022년 회고

    2022년 회고

    2022년 동안 진행했던 활동을 정리한다. 개발 경험 스터디 주도 & 팀원의 공감과 협력 이끌어내기 어떻게 하면 확장성 있는 설계를 하고 유지보수와 테스트 하기 좋은 코드를 만들 수 있을 지 고민했다. 그리고 혼자만 깨닫고 넘어가기보단 함께 일하는 팀원분들과 같이 논의하면서 실무에 적용 해보는게 중요하다고 생각했다. 그래서 사내에서 스터디를 주도했고, 이상향과 현실을 비교하고 우리는 무엇을 할 수 있을지 논의했다. 실습도 준비해서 진행하고 배운 내용을 실무에 적용해보았다. 학습 & 실무적용 경험을 활용하여 테스트 작성 가이드를 만들고 팀에 공유했다. 코드리뷰도 했다. 그 결과 팀원의 공감대화 협력을 이끌어낼 수 있었다. 학습 사내/외 지인과 함께 스터디를 진행했다. 단순히 교재를 읽는 것을 넘어서 토론/..

    [Test][번역] Martin Fowler's Self Testing Code

    [Test][번역] Martin Fowler's Self Testing Code

    마틴 파울러(Martin Fowler)의 Self Testing Code 를 번역한 글입니다. 배경 테스팅, 테스트코드를 공부하던 중 마틴파울러의 블로그 글을 봤는데 좋은 내용이었다. 공부하면서 번역했던 글을 공유 할겸해서 올린다. 요약 테스트는 소프트웨어의 버그를 줄일 수 있다. 테스트로 개발자들은 시스템을 수정할 수 있다는 '자신감'을 얻는다. 테스트가 있으면 당신이 실수하더라도 빠르게 파악하고 고칠 수 있다. -> 결함이 외부로 전파되는 것을 막는다. 내용 You have self-testing code when you can run a series of automated tests against the code base and be confident that, should the tests pa..

    글쓰기 테스트

    글쓰기 테스트

    [Java] 불변 컬렉션과 생성방법 비교 (Unmodifiable vs Immutable)

    [Java] 불변 컬렉션과 생성방법 비교 (Unmodifiable vs Immutable)

    배경 불변 컬렉션을 생성하려는데 Collections.unmodifiableList(), ImmutableList.of() 두 가지 방법이 있어서 정리한다. 요약 Collections.unmodifiableList(), ImmutableList.of()로 생성된 컬렉션은 모두 불변성을 보장한다. Collections.unmodifiableList(origin)는 원본이 변경될 경우 생성된 컬렉션도 영향받는다. ImmutableList.of() 생성 시점에 원본을 복사하므로 원본이 변경되어도 영향받지 않는다. 따라서 가장 안전한 방법은 ImmutableList이다. (단, 내부적으로 원본을 복사하므로 메모리를 조금 더 사용할 수 있다.) Java9부턴 List.of()가 ImmutableList.of()를..

    [LeetCode] 152. Maximum Product Subarray

    [LeetCode] 152. Maximum Product Subarray

    Problem Given an integer array nums, find a contiguous non-empty subarray within the array that has the largest product, and return the product. The test cases are generated so that the answer will fit in a 32-bit integer. A subarray is a contiguous subsequence of the array. Examles Example 1: Input: nums = [2,3,-2,4] Output: 6 Explanation: [2,3] has the largest product 6. Example 2: Input: nums..

    [BOJ] 1918 후위 표기식

    [BOJ] 1918 후위 표기식

    문제 Releated Topics: stack, String 소스코드 알고리즘 분류: 스택 중위 표기식은 흔히 우리가 사용하고 있는 표기식이다. 후위 표기식은 중위 표기식을 아래의 결과로 바꾼 표기식이다. 의사코드 main inOrderExp 0 && optStack에 있는 opt가 operator보다 연산자 우선순위가 작거나 같다면 optStack에 있는 opt를 optStack에 추가 optStack.push(operator) processOperand(operand) postOrderExp.push(operand) // 추가: postOrder 기반으로 계산하기 operateExp(postOrderExp) numStack for chr in postOrderExp if chr is operator ..

    [BOJ] 1032 명령 프롬프트

    [BOJ] 1032 명령 프롬프트

    문제 Related topics: String 소스코드 알고리즘 분류: 문자열 처리 문자열의 N개 주어졌을 때 문자열을 나타내는 패턴을 출력하는 문제이다. 패턴에는 ".", "?" 만 출력할 수 있고 "?"의 개수를 최소화 해야 한다. (패턴에 "*"이 들어가지 않으므로 쉽게 해결할 수 있다.) 출력할 패턴을 첫번째로 입력되는 문자열로 초기화 한다. 남은 N-1개의 문자열을 입력받는다. for idx 0 to 입력 문자열의 길이-1 패턴의 해당 index가 '?'이면(공통되지 않은 부분) continue 해당 index에서 패턴과 문자열의 문자가 다른 부분은 '?'로 교체한다. 패턴을 출력한다.

    [sw expert] 모의 SW 역량테스트 - 5658 보물상자 비밀번호

    [sw expert] 모의 SW 역량테스트 - 5658 보물상자 비밀번호

    문제 Related Topics: priority queue, simulation 소스코드 알고리즘 분류: 시뮬레이션, 우선순위 큐, 문자열 처리 가능한 모든 비밀번호의 조합을 구한다(단, 중복되지 않는 선에서 우선순위 큐에 추가한다.) 보물 상자의 뚜껑을 시계방향으로 회전할 수 있는 수는 N/4번이다. 각 회전 마다 4개의 16진수의 수를 구한다. 한 변에 해당하는 16진수의 수를 구한다. K번째로 큰 수를 출력한다.

    [sw expert] 모의 SW 역량테스트 - 5653 줄기세포 배양

    [sw expert] 모의 SW 역량테스트 - 5653 줄기세포 배양

    문제 related topic: simulation 소스코드 알고리즘 분류: 시뮬레이션, bfs 아래의 방법을 K 번 반복한다. 활성 큐에 있는 세포의 주변 활성 예상 지점을 후보큐에 추가한다. (단, 최대 생명력이 더 높아질 경우에만 새로 갱신 및 후보큐에 추가한다.) 생명력이 다한 세포는 활성 큐에서 제거한다. 후보 큐에 있는 세포를 비활성 큐에 추가한다. 단 map[row][col] 에 기록 된 최대 생명력과 후보 큐에 있는 세포의 생명력이 같을 때만 추가한다. 해당 visited[row][col] 을 방문처리 한다. 비활성 큐에 있는 세포 중 활성 상태가 되는 세포를 활성 큐에 추가한다. 세포가 활성상태가 되는 조건은 (현재 시간 - 세포의 생성시간 = 세포의 생명력). 즉 생성된 지 생명력 만큼..