본문 바로가기

전체 글1099

[자바] 백준 11378 - 열혈강호 4 (java - 풀이4개) 목차 문제 : boj11378 필요 알고리즘 개념 네트워크 플로우(최대 유량) 애드몬드 카프 등의 네트워크 플로우(최대 유량) 알고리즘을 알고 있어야 한다. 단, 자바의 경우 빠른 입출력까지 사용해야 애드몬드 카프 알고리즘으로 시간 초과 없이 통과 가능하다. 이분매칭 네트워크 플로우에서 이분 그래프로 구성이 가능할 시 사용 가능한 이분매칭 알고리즘을 사용하면 네트워크 플로우보다 더 빠른 시간내에 통과 가능하다. 이 경우엔 자바라도 빠른 입출력 없이도 여유롭게 통과 가능하다. 풀이 1과 풀이 2에서 최대 유량을 이용한 풀이를 한다. 풀이 3과 4에서는 이분매칭을 통해 풀어본다. 각 풀이는 네트워크 플로우 또는 이분매칭 알고리즘의 기본적인 구현 방식을 알고있다는 전제하에, k개의 추가된 일을 어떻게 처리하는.. 2022. 12. 18.
[TDD] 스터디 1주차 (기본적인 테스트 방법, 1~2장 정리) 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. ☆ 스터디 킥오프 (테스트 관련 랜덤 팁) 이하 내용은 책 내용 스터디 들어가기 전에 스터디 팀원들끼리 공유한 내용이다. [ Octoping925님의 발표 자료 : https://github.com/Octoping925/TestCodePresent ] ⚈ 실제 구현부와 테스트쪽의 패키지, 클래스명 구조를 동일시 하는게 중요하다. ⚈ GWT, AAA Given : 특정한 값을 가지고 When : 로직을 실행했을 때 Then : 잘 나왔는지 검증한다. AAA : Assignment(=Giv.. 2022. 12. 18.
인텔리제이 JUnit 테스트 리포트 한글 깨짐 해결법 문제 인텔리제이에서 JUnit5를 사용해 테스트 돌릴 시 한글로 설정해둔 DisplayName이 깨져서 나왔다. @DisplayName("생성함") 해결법 1. shift를 두 번 눌러준다. 2. "edit vm" 쳐줘서 저거 눌러준다. 3. 이하의 문구를 추가해준다. -Dfile.encoding=UTF-8 4. 인텔리제이를 껐다킨다. 5. 다시해보면 잘 뜬다. 2022. 12. 15.
스프링부트 3.0.0 프로젝트 생성시 에러 해결법 (인텔리제이) 스터디용 프로젝트 하나 파는김에 새로나온 스프링부트 3.0.0으로 해보려 했다. 그런데 아래와 같은 에러가 발생했다. A problem occurred configuring root project 'java-test-practice'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.0. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.0 ... 얼핏 스프링부트 3.0.0 변경점 찾아봤던 것에서.. 2022. 12. 15.
[자바] 백준 25822 - 2000문제 푼 임스 (java) 문제 : boj25822 필요 알고리즘 개념 누적 합(prefix sum) 내 경우엔 이걸 메인 아이디어로 사용했다. 문제 태그에 없긴하다. 투 포인터 (two pointer) 누적합을 사용한 아이디어에 대해 시간복잡도를 줄이기 위해 사용했다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 내 경우엔 누적합을 사용해 특정 구간에 대해 스트릭이 유지됬다고 가정할 때 필요한 스트릭 프리즈의 수를 O(1)로 알 수 있게 하는게 메.. 2022. 12. 15.
[CS 전공지식 노트] 5장. 자료구조 스터디 메인 이 스터디의 경우 이미 책의 내용이 매우 축약된 내용이므로 책 내용 정리는 크게 의미가 없다고 생각합니다. 따라서 스터디 정리는 추가로 설명한 부분에 대해 작성했습니다. [ 5장 - 자료구조 ] - 시간복잡도 https://nahwasa.com/entry/시간-복잡도에-대해 - 리스트, 벡터 https://nahwasa.com/entry/자료구조-리스트-List-Linked-List-Array-List-Vector-차이점-포함 - 배열 https://nahwasa.com/entry/배열-기본 - 스택, 큐 https://nahwasa.com/entry/자료구조-큐-스택-덱-Queue-Stack-Deque - 트리 '트리 구조로 배열된' 설명이 애매할 수 있음. 한마디로 사이클이 없는 연결 그.. 2022. 12. 15.
[CS 전공지식 노트] 4장. 데이터베이스 스터디 메인 이 스터디의 경우 이미 책의 내용이 매우 축약된 내용이므로 책 내용 정리는 크게 의미가 없다고 생각합니다. 따라서 스터디 정리는 추가로 설명한 부분에 대해 작성했습니다. [ 4장 - 데이터베이스 ] 인기는 MySQL이 많으나, 자바쪽은 오라클을 많이 쓴다. - 185p 보통 논리모델쪽에서 엔터티, 릴레이션이 물리모델의 테이블을 뜻함. 테이블의 행을 "row, 튜플 레코드", 열을 "칼럼, 필드, 속성(어트리뷰트)" 라고 말함. - 191p 오라클은 VARCHAR2가 권장되는데, 차후 VARCHAR는 오라클쪽에서 변경할 수 있기 때문이라고 함. - 202p 예시가 좀 애매한데, 그림으로 그려보면 이해하기 쉬움. 유저 ID와 수강명이 성취도를 결정하는데, 유저 ID와 수강명의 부분집합인 유저 I.. 2022. 12. 15.
[CS 전공지식 노트] 3장. 운영체제 스터디 메인 이 스터디의 경우 이미 책의 내용이 매우 축약된 내용이므로 책 내용 정리는 크게 의미가 없다고 생각합니다. 따라서 스터디 정리는 추가로 설명한 부분에 대해 작성했습니다. [ 3장 - 운영체제 ] - 134 page 이 책에 나온 수준은 단순히 개념만 알고 적당히 대답만 할 수 있는 수준임. 실제 개발에서 전반적인 시야를 넓히려면 별도로 공부하는게 좋음. 네트워크쪽은 책의 제목에 비해 일반적인 수준보다 더 써있는 것 같고(개발자한테 L4, L7의 차이를 물어볼 정도면 그냥 대답하지 말란 얘기가 아닐까..), 1,3,4,5장은 좀 빈약한 느낌이라 저자가 네트워크쪽 좋아하는 것 같음. - 139 page 레지스터는 CPU 내에서 연산 처리용이고, 캐시는 CPU와는 별도로 메모리와 CPU 속도 차이.. 2022. 12. 15.
깃헙 저장소 이관 방법 (github repository 이관, git 이관) 다른 계정의 저장소를 이관해오거나, 깃헙에서 다른 깃 플랫폼으로 커밋로그를 포함해서 이관해야하는 경우가 있다. 이럴 때 이관하는 방법이고, 깃헙 이외에도 사용 가능하다. 윈도우랑 리눅스 둘 다 가능하다. 1. 이관할 깃 저장소의 주소 확인 2. 이관에 사용할 임시 폴더 생성 후(안해도 됨) 클론해온다. git clone --bare [git 주소] 3. 이관할 저장소를 만들고 git 주소를 복사한다. 4. 새로운 저장소로 push 진행 git push --mirror [새로운 git 주소] 5. 파일 정리 새로운 저장소로 가보면 커밋로그까지 포함해서 정상적으로 이관된 것을 볼 수 있다. References https://docs.github.com/en/repositories/creating-and-ma.. 2022. 12. 15.
[잡글] 꼬맨틀 브루트포스 매크로 직장 후배가 스무고개 좋아하냐고 해서 좋아한다고 하니 꼬맨틀을 풀어보라고 했다. 손으로 풀긴 귀찮았다. 원래 귀찮은건 컴퓨터한테 시켜야 한다. 그래서 브루트포스(완전탐색)로 모든 경우를 보면서 푸는걸 시키기로 했다. 1. 데이터는 Wiktionary에 있다고 했다. 우선 그걸 파싱해서 js의 배열 형태 코드로 만들어주는 자바 프로그램을 짰다. 2. 해당 전처리 데이터를 기반으로 js에서 정답을 찾아주는 프로그램을 짰다. 정확히 어느 지점에서 멈춰야할지 모르므로 50 이상이면 일단 멈추게 했다. 결론적으로 50.1 초과면 멈추게 하면 된다. 3. 잘 된다.ㅋㅋㅋㅋㅋ 약 3000번 이상 돌아간 후 정답을 찾았다. 4. 후배한테 풀었다고 자랑하기 위해 재미로 하긴 했는데, 매번 서버로 쏘는걸 보니 저 회사 서.. 2022. 12. 14.