본문 바로가기

전체 글1099

IntelliJ는 왜 jdk(java)를 설치 안해도 동작할까? 어찌보면 당연한내용인데, 인텔리제이를 처음 썼을 땐 엄청 신기했던 것 같다. 인텔리제이의 경우 jdk를 설치하지 않아도 잘 동작한다. 혹시 당연히 자바를 설치해야 한다고 생각해서 따로 설치하고 환경변수까지 등록해서 사용중인 사람들도 있을 것 같은데, 사실 환경변수에 등록 안되있어도 인텔리제이는 혼자서 잘 동작한다. 프로젝트마다 독립적으로 동작하기 위해 jdk를 환경변수로 등록 안하고 사용하는게 더 좋을 것 같다. 그렇지 않으면 프로젝트마다 실행하기 전에 환경변수를 가서 버전 바꿔주거나, 리눅스쪽이라면 sdkman 같은걸로 자바 버전을 변경해주면서 써야 할 것이다. 인텔리제이에서는 File -> Project Structure에서 자바 버전을 선택할 수 있고, 또 원한다면 추가할 수 있다. 이렇게 받아진 .. 2023. 3. 28.
[자바] 백준 25904 - 안녕 클레오파트라 세상에서 제일가는 포테이토칩 (java) 목차 문제 : boj25904 필요 알고리즘 구현, 시뮬레이션 문제에서 제시된 방식대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 어차피 목소리 높이의 상한선은 200이므로, N이 몇이 되든 최악의 경우에도 200번만 확인해보면 된다! 따라서 어렵게 생각할 것 없이, N개짜리를 순서대로 계속 확인하면서 매번 X를 1씩 증가해준다. 그리고 X의 값이 해당 위치보다 더 커지면 해당 위치를 출력해주면 된다. .. 2023. 3. 27.
[종만북] CLOCKSYNC - Synchronizing Clocks (자바 java) 알고리즘 문제해결전략(종만북) 스터디 메인 페이지 목차 문제 : aoj-CLOCKSYNC 풀이 시계 자체에 초점을 맞추면 답이 안나온다. 스위치가 10개 밖에 없다는 부분에 초점을 맞춰보자. 결국 시계는 4번 돌면 제자리다. 따라서 각 10개의 스위치는 3번 이상 누를 일이 없고, 그럼 O(C x 4^10)으로 처리가 가능함을 알 수 있다. 즉, 시계가 몇칸인지는 상관 없고, 그냥 스위치가 10개이고 각각 최대 3번까지 누를 수 있으니 4x4x... 를 해주면 되는 것이다. 코드 : github import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTo.. 2023. 3. 20.
[종만북] BOARDCOVER - 게임판 덮기 (자바 java) 알고리즘 문제해결전략(종만북) 스터디 메인 페이지 목차 문제 : aoj-BOARDCOVER 풀이 모든 칸에 블록을 놓아본다고 하자. 이 경우 흰 칸의 수는 50을 넘지 않는다고 했고, 블록 하나에 3칸씩이므로 최대 16개를 덮으면 된다. 블록의 모양은 4가지이므로, O(C x 4^16) 이 필요하다. 방법을 좀 다르게 생각해서 각 칸마다 놓거나 안놓거나 해봐도 O(C x 2^50)이므로 마찬가지로 불가능하다. 여기서 생각해볼 점은, 블록의 3칸 중 가장 상단 좌측의 위치를 기준으로 놓는다고 생각해보자. 그리고 주어진 게임판의 상단부터 하단으로, 좌측에서 우측으로 쭉 보면서 블록을 놓는다고 해보자. 이렇게 되면 만약 블록을 놓지 않고 그냥 지나쳤을 때, 해당 위치엔 다시는 블록을 놓을 수 없음이 증명된다... 2023. 3. 20.
[종만북] PICNIC - 소풍 (자바 java) 알고리즘 문제해결전략(종만북) 스터디 메인 페이지 목차 문제 : aoj-PICNIC 풀이 n명을 일렬로 놓는 경우의 수는 n! 이다. 따라서 일렬로 놓고 2명씩 쌍을 짓는다고 생각해보면 O(C x n!)가 필요하므로 통과할 수 없다. 더 효율적으로 하려면 2명씩 짝지어볼 수 있다. 이 때, 주의할 점은 아래의 경우들은 모두 같은 경우라는 점이다. '일부만 다르더라도 다른 방법' 이라고 써져 있는 부분은 짝이 다를 경우이지, 이미 정해진 쌍에 대해서는 상관이 없다. (0, 1), (2, 3) (0, 1), (3, 2) (1, 0), (2, 3) (2, 3), (0, 1) (3, 2), (1, 0) ... 등 그리고 모든 학생이 쌍에 포함되어야 하므로, 그냥 쌍을 지어주는 방향을 고정시켜도 결과는 동일하다... 2023. 3. 20.
[종만북] 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.