목록분류 전체보기 (61)
Inor
- 문제 : https://www.acmicpc.net/problem/2851 10개의 버섯이 차례대로 주어지고 슈퍼마리오가 버섯을 순서대로 먹으며 점수를 높이는 상황을 구현하는 문제입니다. 점수가 최대한 100에 가까울 경우에 버섯 먹는 과정을 그만두고 그 점수를 출력합니다. 만약에 98과 102가 나오는 상황에서는 102를 출력하면 됩니다. - 해결 먼저 버섯을 순서대로 먹도록 구현했고 버섯을 먹으며 다음 단계에 먹을 버섯의 값과 비교해서 어떤 값이 100에 가장 가까운지 확인했습니다. 그리고 만약 102와 98이라는 값이 나오면 100과의 차이가 2 일 경우에 102에 우선순위를 두도록 했습니다. now와 after변수를 이용해서 현재 점수와 다음 버섯을 먹었을때의 점수를 비교했습니다. - 소스 코..
- 문제 : https://www.acmicpc.net/problem/10250 문제가 길지만 간단한 문제입니다. 사람의 번호를 층수로 나누었고 엘리베이터에서 얼만큼 떨어져있는지를 계산했습니다. 그리고 나머지 연산으로 사람 번호를 층으로 계산했습니다. 몇 층에 있는지 계산하기 위함이었고 0이 나오면 가장 위의 층에 있는 경우이므로 따로 분기해서 계산 했습니다. - 소스 코드 import java.util.Scanner; public class ACMHotel { int tNum; int[][] testCases; int[] results; public void solve() { Scanner sc = new Scanner(System.in); String tString; tNum = sc.nextInt(..
- 블록체인 블록체인은 2017년 가장 핫한 키워드 중 하나였던 비트코인을 지탱하는 기술입니다. 블록체인은 기존에 중앙 집권적인 데이터 관리리 방식이 아닌 공유 데이터 장부를 분산해서 관리하는 기술입니다. 공유 데이터 장부는 블록체인 서비스가 제공하는 재화에대한 정보가 들어있는데 이 글에서는 비트코인을 예시로 설명하겠습니다. 비트코인 거래에대한 모든 정보는 장부에 저장됩니다. 이 장부에는 사용자가 비트코인 거래, 생산 등의 활동을 했을때 사용자의 비트코인 변화 상황을 기록합니다. 이런 상황을 기록하는 것을 블록이라고 합니다. 비트코인 거래가 발생하면 장부에 블록이 하나 추가됩니다. 이 블록은 한 사람의 장부에만 기록되는 것이 아니고 네트워크에 존재하는 모든 사용자의 장부에 저장됩니다. 블록이 마치 체인과..
- Casting 캐스팅은 프로그래밍 언어에서 자료형을 변환하는 연산입니다. 캐스팅 연산이라고 부르며 자바에서 2번째로 높은 연산 우선순위를 갖고 있습니다. 캐스팅 연산은 기본형 변수(int, double 등), 참조형 변수(객체를 참조하는 변수)에서 사용 가능합니다. 같은 종류의 변수끼리 캐스팅이 가능하고 기본형과 참조형 사이에는 캐스팅 연산이 불가능합니다. 캐스팅 연산이 중요한 이유 중 하나는 객체지향 프로그래밍(OOP) 특성인 다형성과 관련되어있기 때문입니다. 이 글에서는 기본형이 캐스팅 되는 과정을 보며 캐스팅 연산의 특징을 알아보겠습니다. 이후 다른 글에서 업 캐스팅과 다운 캐스팅을 알아보며 참조형 변수에서 캐스팅이 실행되는 과정을 학습하고 다형성이 어떻게 실현되는지 알아보겠습니다. - 기본형 ..
- String String은 문자열을 나타내는 클래스 입니다. 자바에서 가장 자주 사용되는 클래스 중 하나 입니다. 그러나 String 클래스의 특징을 제대로 이해하지 못하고 사용하는 사람들이 많다고 생각합니다. JVM이 메모리 영역에 String 객체를 할당하는 방법을 보면 String 객체가 갖고있는 특성을 이해할 수 있습니다. - String 객체 생성 String 클래스를 이용해서 String 객체를 생성하는 방법이 몇 가지 있는데, 각 방법을 살펴보겠습니다. 아래와 같은 코드가 있고 "StringA" 문자열을 만드는 방법들입니다. 다음과 String을 6번 만드는 시도를 했을때 과연 JVM에서 몇개의 객체를 Heap 영역에 생성해주는지 생각해 보시길 바랍니다. 아래 출력 코드는 각 참조객체 H..
- 문제 : https://www.acmicpc.net/problem/11052 남은 붕어빵을 세트로 판매하는 문제입니다. 세트를 어떻게 나누어야지 이윤을 가장 많이 남길 수 있는지 풀어야됩니다. 이전 값이 다음 값에 영향을 줄 수 있기(memoization) 때문에 DP로 풀었습니다. - 풀이 먼저 하나의 경우를 만들고 각각을 분류하며 풀었습니다. 경우를 나열해본 결과 D[N]을 구하기 위해 D[N]부터 D[1]까지 적절하게 더해주며 결과를 도출했습니다. D[N]을 구하기 위해 먼저 N개의 붕어빵 세트를 만들었을때 값을 D[N]에 넣어줬습니다. 그리고 나머지 값들과 비교해줬습니다. D[N] < D[N-j] + D[N-(N-j)]로 비교하면 N보다 작은 값 중에 가장 큰 값과 가장 작은 값을 차례로 비교..