목록전체 글 (113)
모눈종이에 사각사각
🍎[백준 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..
개발을 하던 중에 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
java에는 Deque 인터페이스가 있다. Deque 인터페이스는 Queue인터페이스를 상속받았다. 한쪽 끝으로만 추가/삭제할 수 있는 Queue와 달리 Deque는 양쪽 끝에 추가/삭제가 가능하다. 1. add() 큐의 끝에 삽입한다. 삽입할 공간이 없으면 IllegalStateException을 반환한다. 성공적으로 삽입되면 true를 반환한다. 2. addFirst() 큐의 첫번째에 삽입한다. 삽입할 공간이 없으면 IllegalStateException을 반환한다. 성공적으로 삽입되면 true를 반환한다. 3. addLast() 큐의 끝에 삽입한다. 삽입할 공간이 없으면 IllegalStateException을 반환한다. 성공적으로 삽입되면 true를 반환한다. 4. contains() 큐에 요소가..
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() 외에..
🍎 최종 코딩 테스트 준비 프리코스 4주차가 끝난 후 1차 합격자 발표 및 코딩테스트까지는 약 3주간의 시간이 있었다. 최종 코딩 테스트 대비를 위해 집 주변에서 진행하는 스터디 모임에 들어갔다. 11월 26일을 시작으로 시험이 있던 주인 12월 11일까지 매주 토요일, 일요일에 모여서 팀원들 다같이 준비를 했다. 2, 3, 4주차의 문제를 풀어보면서 다시 복습을 했고, 지난 기수인 3기와 4기의 최종 코딩 테스트 문제도 풀었다. 5시간 동안 문제를 푼 다음에 1~2시간 정도 각자 고민하면서 구현했던 부분 혹은 서로의 코드를 보면서 의문이 드는 점에 대해 이야기를 했다. 팀원들 모두 뛰어난 실력을 가지고 계시던 분들이라 정말 많이 배웠다. 혼자 코딩테스트를 준비했다면, 절대 이렇게 준비하지 못했을 것 같..
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..
0. 시작 이번 3주차 미션은 정말 코드를 많이 수정했던 한 주였다. 다 작성하고 테스트 코드를 돌렸는데 예상치 못한 곳에서 오류가 발생했고, 이를 해결하려다 보니 전체적인 구조를 바꿔야 했었다. 이번주는 2주차 미션의 목표인 함수 분리와 테스트 작성에 더해서 클래스를 분리하고, 도메인 로직에 대한 단위 테스트를 작성하는 연습을 하는 것이 목표였다. 1. 기능 요구사항 다음은 내가 작성한 구현할 기능 목록이다. 세세하게 조건을 맞춰줘야 하는 부분이 많아서 지난주보다 많아졌다. 2. 프로그래밍 요구사항 위의 사진은 지난주 까지의 요구사항이고, 이번주에는 이렇게 추가된 요구사항이 있었다. Java Enum을 적용해야 했기에 Enum에 대한 공부도 다시 하고, 적용하려 노력했다. 그리고 도메인 로직에 단위 테..
0. 시작 본격적인 미션이 시작된 것 같다고 느낀 한 주였다. 지난주인 1주차의 목표는 Git과 미션 사이클에 익숙해지는 것이 목표였다. 2주차는 아래의 메일 본문 내용의 일부에 나와있듯이, 함수를 분리하고, 함수별로 테스트를 작성하는 것에 익숙해지는 것이 목표였다. 코드를 작성하면서 내가 한 고민사항을 적어보려고 한다. 조금 길어질 수도 있지만, 사고과정 또한 하나의 성장과정이라고 생각해서 기록해두면 좋을 것 같다. 1. 기능 요구사항 2주차 미션은 숫자야구이다. 지난주와 동일하게 진행방식은 기능요구사항, 프로그래밍 요구사항, 과제 요구사항을 다 구현하는 것이었다. 기능을 구현하기 전 기능 목록을 만들고 기능 단위로 커밋을 해야했기에 기능 요구사항을 읽으면서 구현할 기능을 정리했다. 게임 예시를 공책에..
🌙 기본형과 문자열 간의 변환 기본형 \(\rightarrow\) 문자열 문자열 \(\rightarrow\) 기본형 String String.valueOf(boolean b) String String.valueOf(char c) String String.valueOf(int i) String String.valueOf(long l) String String.valueOf(float f) String String.valueOf(double d) boolean Boolean.parseBoolean(String s) byte Byte.parseByte(String s) short Short.parseShort(String s) int Integer.parseInt(String s) long Long.parse..