목록전체 글 (106)
모눈종이에 사각사각
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8gDN4/btr6Oljwem1/Lk6jIVTSSu1VqCp6tMCbjk/img.png)
git에는 세 가지 공간이 있다. 바로 Working Directory, Staging Area, Repository이다. Working Directory working directory는 현재 내가 작업하고 있는 곳의 directory이다. working directory는 다시 두 가지로 나눌 수 있다. untracked untracked는 쉽게 말해 git이 해당 파일의 존재를 몰라 버전 관리가 안되고 있는 상태. 즉, 한 번도 git add 된 적이 없는 파일이다. tracked tacked는 git이 해당 파일의 존재를 알고 있는 상태로, 버전 관리가 되고 있는 상태이다. commit된 파일에 수정사항이 생긴다면 그 파일은 working directory의 tracked 상태인 것이다. git ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cJW26y/btr3U27UtB8/YKvzK6by1Sj3hRaSIVvsm1/img.jpg)
해당 위치가 프로젝트의 루트로 지정되어 있지 않아 발생하는 문제이다. 상위의 폴더를 우클릭 -> Mark Diredtory as -> Sources Root 를 클릭하여 프로젝트의 루트로 지정해주면 해결할 수 있다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cNZbBE/btrZjACebOf/NwnisUP6JuwRfAKd6Il4L0/img.jpg)
🍎[백준 2212] 센서 문제링크 https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net ⚾ 코드 import sys input = sys.stdin.readline n = int(input()) k = int(input()) sensors = list(map(int, input().split())) sensors.sort() diff = [sensors[i]-sensors[i-1] for i in range(1, n)] di..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FCBy3/btrW2uwj1PS/fQPSUa1kAjgBcMEFMl40n0/img.jpg)
🍎[백준 5557] 1학년 문제링크 https://www.acmicpc.net/problem/5557 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net ⚾ 코드 from collections import deque n = int(input()) numbers = list(map(int, input().split())) dp = [[0]*21 for _ in range(n-1)] dp[0][numbers[0]] = 1 for i in range(1, n-1): for j in range(21): if dp..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oLOjL/btrWWr7A8FV/0sAez2VRxFiCi1ju21S1Y0/img.jpg)
개발을 하던 중에 No serializer found for class ~~~로 시작하는 에러가 발생했다. 그 이유는 반환하는 dto 객체에 getter 없었기 때문에 join으로 파싱을 해야 하는데 하지 못해서 발생한 것이었다. getter 메서드를 만들거나, @Getter 어노테이션을 붙이는 것으로 해결할 수 있다. 참고사이트 https://stackoverflow.com/questions/59578802/jackson-no-serializer-found-for-class-and-no-properties-discovered-to-cre
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjk7KK/btrWQK0Dc7I/ksr2EIh7dI0Zux9AtXafBK/img.jpg)
java에는 Deque 인터페이스가 있다. Deque 인터페이스는 Queue인터페이스를 상속받았다. 한쪽 끝으로만 추가/삭제할 수 있는 Queue와 달리 Deque는 양쪽 끝에 추가/삭제가 가능하다. 1. add() 큐의 끝에 삽입한다. 삽입할 공간이 없으면 IllegalStateException을 반환한다. 성공적으로 삽입되면 true를 반환한다. 2. addFirst() 큐의 첫번째에 삽입한다. 삽입할 공간이 없으면 IllegalStateException을 반환한다. 성공적으로 삽입되면 true를 반환한다. 3. addLast() 큐의 끝에 삽입한다. 삽입할 공간이 없으면 IllegalStateException을 반환한다. 성공적으로 삽입되면 true를 반환한다. 4. contains() 큐에 요소가..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/egLxJ3/btrVjjpTeqn/L00BJW02lBDBVoKEZ3vfR0/img.jpg)
int 범위를 벗어나는 수를 연산하면 원하는 결과가 나오지 않는다. int a = Integer.MAX_VALUE; int b = Integer.MAX_VALUE; int c = a+b; System.out.println(c); // -2 하지만 JDK 8부터 Math 클래스에 두 개의 addExact() 메서드가 추가됐다. 두 메서드는 결과에 int나 long 오버플로우가 발생하기 쉬울 때 유용한 메서드이다. 잘못된 결과를 반환하는 대신 ArithmeticException을 던진다. int a = Integer.MAX_VALUE; int b = Integer.MAX_VALUE; int c = Math.addExact(a, b); System.out.println(c); Math.addExact() 외에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/7ljr8/btrUfr9UQQI/a64Vqi7pNvrcN2LdkTB0g0/img.jpg)
🍎 최종 코딩 테스트 준비 프리코스 4주차가 끝난 후 1차 합격자 발표 및 코딩테스트까지는 약 3주간의 시간이 있었다. 최종 코딩 테스트 대비를 위해 집 주변에서 진행하는 스터디 모임에 들어갔다. 11월 26일을 시작으로 시험이 있던 주인 12월 11일까지 매주 토요일, 일요일에 모여서 팀원들 다같이 준비를 했다. 2, 3, 4주차의 문제를 풀어보면서 다시 복습을 했고, 지난 기수인 3기와 4기의 최종 코딩 테스트 문제도 풀었다. 5시간 동안 문제를 푼 다음에 1~2시간 정도 각자 고민하면서 구현했던 부분 혹은 서로의 코드를 보면서 의문이 드는 점에 대해 이야기를 했다. 팀원들 모두 뛰어난 실력을 가지고 계시던 분들이라 정말 많이 배웠다. 혼자 코딩테스트를 준비했다면, 절대 이렇게 준비하지 못했을 것 같..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cf2yCC/btrRM0vfAgy/OdtnFNG4KPAwsFYNT7tU4k/img.jpg)
0. 시작 벌써 마지막 미션이다. 4주가 이렇게 빨리 지나가다니... 이번주 미션은 다리 건너기 미션이었다. 문제를 읽었는데 맞게 이해한건가? 싶던 찰나에 슬랙에 관련 영상을 올려주신 분들이 있어 잘 이해할 수 있었다. 더보기 https://youtu.be/JUrErvCiPDc -> 오징어 게임의 다리 게임(매운맛) https://youtu.be/dAvPLL4y0uE -> 런닝맨의 다리 게임(순한맛) 이번주의 미션은 3주차 미션에 리팩터링이 추가되었다! 3주차에도 일단 작성한 다음에 다 고쳤던 기억이 있었기에 이번에도 비슷하게 진행하려고 했다. 그러나 시작하기 전에 3주차 미션의 코드 리뷰를 통해 부족한 점은 무엇인지, 개선할 점이 있는지 먼저 학습했다. 1. 3주차 코드리뷰 1-1. static 메서드..
구분자 넣기 StringJoiner을 이용하면 쉽게 구분자를 넣을 수 있다. StringJoiner을 생성할 때 구분자를 넣어 생성한 후 add메서드로 삽입한다. StringJoiner stringJoiner = new StringJoiner(" | "); stringJoiner.add("O"); stringJoiner.add(" "); stringJoiner.add("X"); System.out.println(stringJoiner); 출력 O | | X prefix(접두사), suffix(접미사) 넣기 StringJoiner 클래스는 다음과같이 오버로딩 되어있기 때문에 구분자와 함께 접두사와 접미사도 넣어 생성할 수 있다. StringJoiner stringJoiner2 = new StringJoin..