
전체 글
Optional 클래스
최근 Java spring을 배우면서, Optional이란 클래스를 자주 접했다. Null 값을 처리하기 위해서 사용하는 클래스라는 설명은 들었지만, 정확히 어떤 기능을 하는 지 알면 좋을 것 같아 블로그 글로 정리하기로 했다. Optional Optional 클래스는 자바 8부터 도입된 클래스이다. 이 클래스의 목적은 객체 호출 도중 발생하는 null 값을 보다 간단히 처리하기 위해서인데, 기존에는 객체가 null값인지 확인하기 위해 아래와 같은 if문을 사용해야 했다. import java.util.*; import java.lang.*; import java.io.*; class Apple{ public String eat(){ return "냠냠"; } } class Test{ public sta..
[BOJ] 15999 뒤집기
문제 링크 www.acmicpc.net/problem/15999 모든 알고리즘 문제는 C++로 구현되어 있습니다. 격자판의 초기상태로 가능한 경우의 수는, 눌러서 최종 상태로 갈 수 있는 격자의 수를 n이라 하면 2^n가지가 나올 수 있다. 이러한 격자를 누를 수 있는 격자라고 해보자. 누를 수 있는 격자의 수는 어떻게 구해야 할까? 최종 상태의 격자판에서 두 개의 격자가 배치되는 경우의 수를 생각해보자. - 1번 경우에서는 다른 상태에서 A를 눌러 이 상태로 올 수 없다. A가 B와 같은 검은색이었다면 A를 눌렀다면 B도 같이 하얀색으로 변했을 것이고, A가 하얀색이었다면 A를 눌러서 검은색으로 바꾸고, 다시 눌러서 하얀색으로 바꿀 때 B도 같이 하얀색으로 바뀌기 때문이다. - 2번 경우도 마찬가지로 ..
[BOJ] 11444 피보나치 수 6
문제 링크 www.acmicpc.net/problem/11444 모든 알고리즘 문제는 C++로 구현되어 있습니다. 이 문제는 일반적인 재귀함수로 풀면 시간 초과를 받고, 메모이제이션을 적용하려 해도 메모리 제한에 걸리게 된다. 이 문제는 피보나치 수를 행렬로 생각하고, 행렬의 거듭제곱을 이용해서 풀어야 한다. 현재 피보나치 수와 이전 수를 각각 1행, 2행에 배치한 2X1 행렬을 생각해보자. 이 다음 피보나치 수를 구하려면 두 수를 더한 수를 첫 번째 행에, 기존에 첫 번째 행에 있던 현재 피보나치 수는 두 번째 행으로 옮겨줘야 한다. 이런 동작은 아래와 같은 행렬 곱셉으로 간단하게 수행할 수 있다. 현재 피보나치 수가 1, 이전 피보나치 수가 1이라고 했을 때, 행렬 [[1 1], [1 0]]을 곱해주..
프로젝트 재정비
취업에 사용할 포트폴리오도 정리할 겸, 올해 상반기에 제작했던 웹 클라우드 스토리지 서비스인 Moonge drive를 오랜만에 재정비하기로 했다. 한동안 키지 않았던 서버를 다시 켜려고 하니 안되는 부분들도 많았고, 수정해야 할 부분들도 있었다. 우선 서버를 기존의 유료 서버에서 아마존에서 무료로 제공하는 AWS EC2 t2.micro로 변경했다. Docker 기반으로 서버를 구축했어서 데이터를 옮기는 것은 깃허브를 이용해 쉽게 해결했지만, 사이트에 접속이 되지 않았다. 조사를 좀 해보니, 서버에 몇 가지 문제가 있다는 것을 알 수 있었다. 1. EC2 서버의 HTTP, HTTPS 포트를 열지 않았다. 2. 도메인이 설정되어 있지 않아 SSL 인증서를 받지 않은 상태였지만 nginx에서는 https로 연..