본문 바로가기

전체 글1104

[종만북] BOGGLE - 보글 게임 (자바, C++) 알고리즘 문제해결전략(종만북) 스터디 메인 페이지 목차 문제 : aoj-BOGGLE 풀이 전체적인 로직은 다음과 같다. A. 보글 게임판을 입력받는다. B. N개의 각 단어에 대해, 각 문자와 동일한 보글 게임판의 문자 위치를 찾는다. C. 이후 각 단어의 모든 문자를 찾을 수 있는 동안 보글 게임판의 현재 위치에서 8방향으로 탐색을 진행한다. D. 모든 문자를 찾았다면 YES, 아니면 NO 이다. 위와 같이 완전탐색으로 진행하면 O(C x N * 8^10) 정도의 시간이 필요하므로 풀 수 없다(10은 단어의 길이를 뜻한다). 그래서 좀 더 줄여봐야 한다. 우선 'A'를 입력받으면서 모든 대문자(26개)에 대해 존재유무를 체크해둔다. -> N개의 문자에 체크해둔 문자에 없는 문자가 등장한다면 탐색을 해보.. 2023. 3. 20.
귀찮지만 확실한 랜섬웨어 예방 (윈도우 디펜더만 사용) 목차 서론 평소 별도의 백업 방법을 가지고 있다면 몰라도, 일반적으로 개인이 백업 방법을 마련해두긴 어려울 수 있다. 또 주기적으로 백업을 하더라도, 모든 데이터에대해 백업을 실시간을 계속 하긴 힘들다. 그렇다고 백신을 설치하자니 어떤게 좋은지도 모르겠고, 언제나 창이 방패보다 우세하므로 백신을 깔아도 불안하긴 마찬가지다. 내 경우엔 백신을 추가로 설치하는것도 싫고, 윈도우 디펜더만 쓰고 싶다. 그리고 좀 귀찮더라도 확실한 방법이 더 좋다. 정확힌 걸리는건 못막더라도, 아무튼 데이터를 살리는게 목적이다. 데이터만 무사하다면 랜섬웨어가 걸려도 그냥 한번 밀어버리고 다시 원래대로 되돌려주면 될 것이다. 확실한 방법이란, 그냥 본인이 허용한 프로그램 이외의 프로그램에 대한 파일 수정(UPDATE, CREATE.. 2023. 3. 20.
[지속적인 통합] 9장. 지속적인 피드백 지속적인 통합 스터디 메인 페이지 목차 * 주의 : 책(폴M 듀발 저 - 지속적인 통합) 내용 중 기억하고 싶은 내용 및 제 생각을 적은 글 입니다. 책이 나온지 오래되어 설명에 나온 기술스택이 현재 사용되지 않는게 많아 기술스택보다는 이론이나 책의 조언들 위주로 작성할 것 같고, 기술스택은 제가 알고있는대로 수정해서 작성합니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. * 별도로 표기되어 있지 않다면 이미지 출처는 '지속적인 통합 (폴M 듀발 저)' 책 입니다. CHAPTER 9. 지속적인 피드백 피드백이 없이는 CI의 어떤 측면들도 쓸모가 없다. 7~8시간이 지나도록 테스트나 검사가 실패했다는 걸 알지 못하면, 문제가 전파되어 다른 실패까지 불러일으키기 전에 즉각적인 조치를 취하거나 문제.. 2023. 3. 19.
[지속적인 통합] 8장. 지속적인 배포 지속적인 통합 스터디 메인 페이지 목차 * 주의 : 책(폴M 듀발 저 - 지속적인 통합) 내용 중 기억하고 싶은 내용 및 제 생각을 적은 글 입니다. 책이 나온지 오래되어 설명에 나온 기술스택이 현재 사용되지 않는게 많아 기술스택보다는 이론이나 책의 조언들 위주로 작성할 것 같고, 기술스택은 제가 알고있는대로 수정해서 작성합니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. * 별도로 표기되어 있지 않다면 이미지 출처는 '지속적인 통합 (폴M 듀발 저)' 책 입니다. CHAPTER 8. 지속적인 배포 소프트웨어를 작성하라고 급여를 준다면, 급여를 지급하는 조직은 예측가능하고 현실적인 시일이 지난 후엔 여러분이 최종 사용자에게 작동하는 소프트웨어를 제공하리라 기대한다. 배포 프로세스를 개발 프로세.. 2023. 3. 19.
[지속적인 통합] 7장. 지속적인 검사 지속적인 통합 스터디 메인 페이지 목차 * 주의 : 책(폴M 듀발 저 - 지속적인 통합) 내용 중 기억하고 싶은 내용 및 제 생각을 적은 글 입니다. 책이 나온지 오래되어 설명에 나온 기술스택이 현재 사용되지 않는게 많아 기술스택보다는 이론이나 책의 조언들 위주로 작성할 것 같고, 기술스택은 제가 알고있는대로 수정해서 작성합니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. * 별도로 표기되어 있지 않다면 이미지 출처는 '지속적인 통합 (폴M 듀발 저)' 책 입니다. CHAPTER 7. 지속적인 검사 코드를 분석하는 '코드 검토, 짝 프로그래밍, 정적 코드 분석'은 모두 엄격히 적용하지 않으면 그다지 유용하지 않다. 코드 검토(코드 리뷰인듯)나 짝 프로그래밍의 경우, 코드에서 악취가 나더라도 동.. 2023. 3. 19.
[자바] 백준 10471 - 공간을 만들어 봅시다 (java) 목차 문제 : boj10471 필요 알고리즘 브루트포스 모든 경우를 확인해서 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제는 0, W, 그리고 입력받은 P개의 파티션(0 < P < W) 총 P+2개에 대해 모든 쌍을 확인해 차이를 확인하면 되는 문제이다. 모든 경우를 보면 되므로 브루트포스(완전탐색) 이다. 그렇게 해도 O(P^2) 이므로 시간이 충분하다! 코드 : github import j.. 2023. 3. 17.
[자바] 백준 7570 - 줄 세우기 (java) 목차 문제 : boj7570 필요 알고리즘 그리디 알고리즘 모든 경우에 적용되는 규칙을 적용해 푸는 그리디 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이게 특정 위치의 수를 원하는 위치로 보낼 수 있었으면 좀 쉬웠겠는데, 맨 앞이나 맨 뒤로만 보낼 수 있는 부분 때문에 좀 생각하기 어려워지는 것 같다. 내가 정한 규칙은, 가장 긴 +1씩 증가하는 부분 수열을 고정시키고 나머지 애들을 어떻게든 움직여보는 것이다... 2023. 3. 16.
[자바] 백준 18224 - 미로에 갇힌 건우 (java) 목차 문제 : boj18224 필요 알고리즘 너비 우선 탐색 (BFS) 좀 어려운 BFS 문제이다. 근본은 동일하다. 방문체크와 탐색만 잘 하면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS에 대해 모른다면 '이 글'을 참고해보자. 특히 '방문체크에 대해 좀 더 써봄' 부분을 이해해야 풀 수 있다. 결국 이 문제도 방문체크를 모든 경우를 표현할 수 있으면서도 최소한으로 할 수 있고, 문제에서 주어진 대로 탐색을.. 2023. 3. 15.
[자바] 백준 2258 - 정육점 (java) 목차 문제 : boj2258 필요 알고리즘 그리디 알고리즘, 정렬 그리디 알고리즘으로 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 어떤게 이득일지 직관적으로 한번 생각해보자. 뭐 당연히 싸고 무게 높은 고기일수록 이득이다. 그럼 싼게 더 중요할까 무게 높은게 더 중요할까? 이 문제의 경우엔 둘 중 하나를 선택하기가 어려운데, 어떠한 덩어리를 샀을 때 그 덩어리보다 싼 고기는 무료로 구매가 가능하기 때.. 2023. 3. 15.
[자바] 백준 19829 - The Pleasant Walk (java) 목차 문제 : boj19829 필요 알고리즘 구현 문제에서 원하는 바에 대해 규칙을 찾아서 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 사실 k값은 의미가 없다. 그냥 n개의 입력을 받으면서, 이전값과 다른 숫자가 연속으로 몇 번 들어왔는지만 알면 된다. 이 중 최대값을 출력해주면 된다. 예를들어 이하의 예제를 보자. 11 3 1 2 3 3 2 1 2 2 2 2 3 찾으려는 구간들을 색상으로 그려보면 다음.. 2023. 3. 15.