본문 바로가기

분류 전체보기1056

[지속적인 통합] 3장. 지속적인 통합을 이용해 위험 줄이기 지속적인 통합 스터디 메인 페이지 목차 * 주의 : 책(폴M 듀발 저 - 지속적인 통합) 내용 중 기억하고 싶은 내용 및 제 생각을 적은 글 입니다. 책이 나온지 오래되어 설명에 나온 기술스택이 현재 사용되지 않는게 많아 기술스택보다는 이론이나 책의 조언들 위주로 작성할 것 같고, 기술스택은 제가 알고있는대로 수정해서 작성합니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. * 별도로 표기되어 있지 않다면 이미지 출처는 '지속적인 통합 (폴M 듀발 저)' 책 입니다. CHAPTER 3. 지속적인 통합을 이용해 위험 줄이기 "품질이란 누가 보지 않을 때에도 제대로 돌아가는 걸 뜻한다" - 헨리 포드 3장에선 CI의 여러 측면을 활용하여 어떤 소프트웨어 위험 요소를 줄일 수 있는지에 대해 알아봄 소.. 2023. 3. 8.
[지속적인 통합] 2장. 지속적인 통합 도입하기 지속적인 통합 스터디 메인 페이지 목차 * 주의 : 책(폴M 듀발 저 - 지속적인 통합) 내용 중 기억하고 싶은 내용 및 제 생각을 적은 글 입니다. 책이 나온지 오래되어 설명에 나온 기술스택이 현재 사용되지 않는게 많아 기술스택보다는 이론이나 책의 조언들 위주로 작성할 것 같고, 기술스택은 제가 알고있는대로 수정해서 작성합니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. * 별도로 표기되어 있지 않다면 이미지 출처는 '지속적인 통합 (폴M 듀발 저)' 책 입니다. CHAPTER 2. 지속적인 통합 도입하기 좋은 소프트웨어를 개발하려면 기본적인 실천 방법을 일관되게 수행하는 게 중요하다 소프트웨어 개발에서 가장 심각한 문제 중 하나는 설익은 '가정' 메소드의 매개변수들이 항상 정상적으로 넘어올.. 2023. 3. 8.
[지속적인 통합] 1장. 시작하기 지속적인 통합 스터디 메인 페이지 목차 * 주의 : 책(폴M 듀발 저 - 지속적인 통합) 내용 중 기억하고 싶은 내용 및 제 생각을 적은 글 입니다. 책이 나온지 오래되어 설명에 나온 기술스택이 현재 사용되지 않는게 많아 기술스택보다는 이론이나 책의 조언들 위주로 작성할 것 같고, 기술스택은 제가 알고있는대로 수정해서 작성합니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. * 별도로 표기되어 있지 않다면 이미지 출처는 '지속적인 통합 (폴M 듀발 저)' 책 입니다. CHAPTER 1. 시작하기 겉보기엔 기초적인 것 같은 실천 방법도 설교보다는 실천하는 데 중점을 둬야 한다. 통합 빌드를 자주 돌리고 그게 대수롭지 않도록 만들고 싶다면 지속적인 통합(이하 CI)가 도움이 될 것이다. CI 컴파일.. 2023. 3. 7.
[자바] 백준 18112 - 이진수 게임 (java) 목차 문제 : boj18112 필요 알고리즘 BFS (너비우선탐색) 시작 이진수부터 목표 이진수까지 문제에서 제시된 동작들을 통해 순회하며 BFS를 진행하는 문제이다. 비트마스킹 애초에 문제 자체가 비트연산을 사용하는걸 전제로 만들어진 듯 하다. 안 쓸 이유가 없다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 모른다면 'BFS 알고리즘 (너비 우선 탐색)' 글을 먼저 읽어보자. 이 글에 제시된 동작들은 모두 비트.. 2023. 3. 7.
[자바] 백준 13015 - 별 찍기 - 23 (java) 목차 문제 : boj13015 필요 알고리즘 구현 문제의 입출력을 보고 규칙성을 찾은 뒤 규칙대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 규칙성을 파악해서 구현해주면 된다. 내 경우엔 크게 맨위, 맨아래, 중간, 그 사이들로 나누어서 생각했다. 코드에서 함수로 나누어두었으니 코드를 확인해보면 될 것 같다. 주의점은 출력할 때 각 줄의 뒤쪽에 공백이 있으면 안된다. 즉, 각 줄이 '*** ' 처럼 .. 2023. 3. 7.
자바에서 문자열 합칠 때 '+' 연산을 쓰지 마세요! (StringBuilder, StringJoiner, String.join, StringBuffer) 목차 최근 String에 대한 '+' 연산을 사용해 timeout이 나고있는걸 봤습니다. 해당 코드를 디버깅해본 개발자는 timeout이라는 exception 자체를 해결하려 했겠지만, 실은 로직이 느린게 문제입니다. 일종의 XY problem 입니다. 개발자로써 대부분의 문제야 구글링해보면 해결할 수 있지만, 위의 경우 이 글의 내용에 대해 모르면 exception은 timeout으로 나오니 구글링으로 알 수 없는 내용입니다. 이하 글에서 시간복잡도 표현을 위해 big-O 표기가 나오는데, O(N)과 같은 표기를 모르거나 시간복잡도에 대해 모른다면 '알고리즘 시간복잡도에 대해' 글을 참고해주세요. 결론부터 말하자면 문자열을 합쳐서 만들 때 StringBuilder를 사용해야 합니다. 물론 언제나 팀의 .. 2023. 3. 7.
[자바] 백준 1194 - 달이 차오른다, 가자. (java) 목차 문제 : boj1194 필요 알고리즘 BFS (너비우선 탐색) 최단거리를 찾는 문제로 BFS로 풀 수 있다. 비트마스킹 BFS 진행 시 모든 경우에 대해 방문체크가 가능해야한다. 이걸 위해 비트마스킹을 사용한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 모른다면 우선 'BFS 알고리즘 (너비 우선 탐색)'을 보자. 특히 이 문제를 풀기 위해서는 '방문체크에 대해 좀 더 써봄' 부분에 적어놓은걸 이해해야 한.. 2023. 3. 6.
[자바] 백준 18513 - 샘터 (java) 목차 문제 : boj18513 필요 알고리즘 개념 BFS (너비 우선 탐색) BFS로 풀 수 있는 문제이다. 논리는 약간 그리디에 가까운 것 같다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 샘터가 아래처럼 3개가 있다고 해보자. 당연하게도 샘터에서 가장 가까운 곳 부터 집을 두는 것이 이득일 것이다. 따라서 각 샘터에서 출발해 좌우로 퍼지면서 집을 지어주면 된다. 거리가 1 떨어진 집은 아래와 같다. 거리가 1 떨어진 .. 2023. 3. 3.
[잡글] chatGPT는 자주 틀린다. chatGPT는 약간 그럴듯하게 알려주는게 잘못된 정보를 알려주지 않는 것 보다 중요하게 세팅되어 있는 것 같다. 그래서 알아서 걸러들어야한다. 이번에 질문한게 2연속으로 잘못 대답한게 재밌어서 한번 올려본다. 상황은 친구가 사탕을 먹으려고 해서 장난으로 절반으로 잘라달라고 했다(엄청 딱딱한 사탕이라 못자른다). 당연히 못자르고, 그럼 절반만 녹혀먹고 달라고 했다(장난임). 그래서 1cm 짜리 사탕이라면 겉부터 몇 mm를 녹혀먹어야 절반인지 궁금해져서 계산해보니 2.1mm가 나왔다. 엄청 대충 계산했기에 검증을 위해 chatGPT에 물어봤더니 2.5mm라고 한다. 아 역시 내가 틀렸네 생각하며 어케 계산했는지 물어봤다. 다 구해놓고 0.2143cm 이걸 2.5mm 라고 출력한다 ㅋㅋ 아무튼 그래서 2.1.. 2023. 3. 2.
[자바] 백준 1048 - 유니콘 (java) 문제 : boj1048 필요 알고리즘 개념 다이나믹 프로그래밍 (DP, 동적계획법) 대부분의 경우의 수 문제는 DP로 풀 수 있다. 이 문제도 DP로 풀 수 있다. 누적합 유니콘의 이동 범위 내의 누적합을 구하기 위해 2차원 누적합을 사용하면 빠르다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제 설명이 약간 부족한데, 시작은 어느지점에서 해도 된다! 이것때매 좀 헷갈렸다. 우선 DP를 어떤식으로 진행하는지는 알아야.. 2023. 3. 2.