https://www.acmicpc.net/problem/10564 10564번: 팔굽혀펴기 각각의 테스트 케이스에 대해서, 동혁이가 응원하는 팀이 득점한 점수의 최댓값을 출력한다. 만약, 불가능한 경우에는 -1을 출력한다. www.acmicpc.net 1년전쯤 한창 DP문제를 풀며 자신감에 차 있을때 풀다가 벽을 느끼며 포기했던 문제였다. 이제는 풀 수 있을것 같아서 도전해 봤는데, 쉽진 않지만 생각하는 대로 문제가 풀리니 뿌듯했다. 필요한 배경지식 다이나믹 프로그래밍 BFS 문제 해결 방법 배낭문제(Knapsack Problem) 풀듯이 문제를 해결했다. 득점의 종류를 이용하여 나올 수 있는 총 팔굽혀펴기의 수를 탐색하는 방법이다. bool dp[i][j] : 총 i점일때 j번 팔굽혀펴기가 가능한가 ..
https://www.acmicpc.net/problem/1256 1256번: 사전 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 김진영 조교는 동호와 규완이에게 특별 과제를 주었다. 특별 과제는 특별한 문자열로 이루어 진 사전을 만드는 것이다. 사전에 수록되 www.acmicpc.net 필요한 배경지식 다이나믹 프로그래밍 조합론 - 파스칼 항등식 문제 해결 방법 N=2, M=2 일때 나올 수 있는 문자열을 사전순으로 나열하면 다음과 같습니다. 1번째 문자열 : aazz 2번째 문자열 : azaz 3번째 문자열 : azza 4번째 문자열 : zaaz 5번째 문자열 : zaza 6번째 문자열 : zzaa 문제에서 K=2로 주어진다면 2번째 문자열인 azaz를 출력해야 합니다. 어떻게 출력해야 ..
Devtools란 ? devtools는 Spring boot에서 제공하는 개발 편의를 위한 모듈이다. 개발을 하다보면, 코드 수정시 브라우저에서 보여주는 내용도 수정하려면 어플리케이션을 재시작해야 하기 때문에 불편한 점이 많은데 devtools를 이용하면 이러한 불편한 점을 해결할 수 있다. 크게 아래의 5가지 기능들을 제공한다고 하는데 Property Defaults Automatic Restart Live Reload Global Settings Remote Applications 쉽게 말하면 브라우저로 전송되는 내용들에 대한 코드가 변경되면, 자동으로 어플리케이션을 재시작하여 브라우저에도 업데이트를 해주는 역할을 한다. 자주 사용하는 H2 콘솔로 예를 들면 인텔리제이에서 엔티티에 새로운 필드를 추가..
Object클래스와 equals(), hashCode(), toString() 메소드에 대해 간단하게 알아보자. 모든 클래스의 조상 Object는 java.lang패키지에 존재하는 클래스인데 import문 없이도 Object클래스를 사용할 수 있다. 모든 클래스들이 Object클래스를 자동으로 상속받기 때문이다. 그런 점에서 Object클래스는 모든 클래스의 조상이라고 할 수 있다. 그렇다면 다른 클래스를 extends로 상속받으면 다중상속이 되는것일까? 자바에서는 다중상속을 허용하지 않는다. 따라서 최상위의 부모클래스가 Object클래스를 상속받게 된다. 결국 어떠한 클래스라도 Object를 상속받게 되는 것이다. 이렇게 하면 다형성을 활용하는데 이점이 있으며, 모든 클래스가 공통으로 사용할 수 있는 ..
이전에 포스팅한 String클래스와 Constant Pool에 이어서 String, StringBuffer, StringBuilder의 차이에 대해 설명한 글이다. String vs StringBuffer vs StringBuilder Java에서는 문자열 객체를 생성하기 위해 String, StringBuffer, StringBuilder이라는 3가지 클래스를 제공한다. 세 클래스 모두 문자열을 관리하기 위한 클래스이지만 불변(Immutable)한지, Thread-safe한지에 따라 조금씩 차이가 있다. String은 불변하며, 객체를 빠르고 작은 메모리로 생성할 수 있기 때문에 메모리 관리를 효율적으로 처리할 수 있다는 장점이 있었다. 하지만 불변하기 때문에 성능이 저하되는 문제도 가지고 있다. St..
Java에서는 문자열 객체를 생성하기 위해 String, StringBuffer, StringBuilder이라는 3가지 클래스를 제공한다. 세 클래스 모두 문자열을 관리하기 위한 클래스이지만 불변(Immutable)한지, 동기화를 지원하는지에 따라 조금씩 차이가 있다. 우선 String부터 살펴보겠다. (String, StringBuffer, StringBuilder의 차이점에 대해 포스팅하려다 String 내용이 많아서 분리했다.) String은 특별하다 String클래스는 다른 클래스들과는 조금 다르다. (String is Special) Reference Type임에도 불구하고 Primitive Type처럼 사용할 수 있다. String을 초기화할때 Primitive Type처럼 직접 문자열 리터럴..
String, StringBuffer, StringBuilder의 차이에 관한 포스팅을 하면서 떠오른 클래스들이 있다. HashMap, HashTable, ConcurrentHashMap 클래스들이다. 무슨 공통점이 있을까? 각각의 클래스들의 차이를 설명하기 위해서는 Thread-safe라는 키워드가 필요하다. Thread-safe란 쉽게 말해서 멀티 스레드 환경에서 안정성을 보장한다는 것인데, 동기화를 지원한다고 보면 된다. (위키를 참고했다.) 위에서 언급한 클래스들 중에서는 String, StringBuffer, HashTable, ConcurrentHashMap이 Thread-safe하다. 멀티 스레드 환경에서 동기화문제를 신경쓰지 않아도 된다. 그렇다면 StringBuilder와 HashMap은..
https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 필요한 배경지식 다익스트라 or BFS DP 문제 해결 방법 이모티콘 N개를 만들기 위한 시간의 최소값을 출력하기 위해 다음과 같은 DP배열을 사용했습니다. dp[N][C] = 현재 이모티콘이 N개이고 클립보드에 저장된 이모티콘의 개수가 C개 일때, 필요한 시간의 최솟값 이렇게 정의하면 3가지 연산에 대하여 다음과 같은 식이 성립합니다. 현재 이모티콘의 개수가 n, 클립보드에 복사된 이모티콘의 개수..