만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍 162

[python] 백준 14501번: 퇴사

문제 www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 분류 다이나믹 프로그래밍 아이디어 날짜를 index로 삼아 (1일째 = dp[1]...) 해당 일까지 얻을 수 있는 금액의 최대 이윤을 저장한다. bottom-up 방식으로, 최대 이윤을 구할 수 있는 N일부터 dp[i] 를 계산한다. 점화식은 dp[i] = max(dp[i]+dp[time[i]+i] , max_pay) 다. max_pay 는 해당일까지 계산한 최대이윤 값이다. 만약 N=7 기준으로, 7일차에 일할 경우 받는 pay = 50, 걸리는 시간 = 1이면 dp[7] = 50 이다. max_pay 또한 0에서 50 이 된다. 6일차에..

[JAVA] 예외 (Exception)

예외 Exception 에러란? JVM 실행에 문제가 발생함을 의미. 자바에서는 에러 이외에 예외(Exception)라고 부르는 오류가 존재한다. 예외는 예외 처리 (Exception Handling) 을 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 예외의 종류 예외에는 일반 예외와 실행 예외가 있는데 일반 예외는 컴파일 과정에서 검사한다. 만약 예외처리 코드가 없다면 컴파일과정에서 오류가 발생한다. 하지만 실행예외 (런타임예외)는 컴파일러가 검사하지 않는다 그렇기 때문에 개발자를 괴롭히는 에러는 대부분 실행 예외다. (=런타임예외) 예외 객체 트리 일반예외는 대신 RuntimeException을 상속받지 않는다. 그 외의 객체는 런타임예외 객체라 할 수 있다. 예외 처리 코..

[hyperledger-fabric] hyperledger fabric 1.4 설치 및 실행 가이드

hyperledger - fabric 을 해보고자 하는 사람들에게 도움이 될 수 있길 바라는 맘에 쓴, 하이퍼레저 패브릭 설치 v1.4 가이드 입니다. AWS EC2 ubuntu 18.04 버전을 기준으로 하고 있습니다. 시작 sudo apt update -y sudo apt upgrade -y git --version # 없으면 설치 git clone -b release-1.4 --single-branch https://github.com/hyperledger/fabric-samples.git 위 명령어는 fabric-sample 의 여러 브랜치 중, 버전1.4 브랜치만 가져오는 명령어 입니다. 따라서 다른 버전을 하고싶다면 https 주소 앞에 부분은 지우면 됩니다. git 설치하는 법은 다른 곳을 ..

프로그래밍/ETC 2020.09.20

[JAVA] 다형성 (상속, 오버라이딩, 업캐스팅)

다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. -www.opentutorials.org- 다형성의 대표적인 예로는 Override 가 있다. 클래스의 부모메소드에 정의되어있는 메소드를 자식클래스의 입맛에 맞게 다양한 형태로 바꿀 수 있음을 의미한다. 자바 다형성의 예시를 확인해보자. Car 는 모든 자동차 종류의 부모 클래스다. 하위에는 자동차의 한 분류인 SUV 가 있다. Main.java class Main { public static void main(String[] args) { Car car = new Car(); Car suv = new Suv(); car.run(); suv.run(); } } Car.java public class Car { ..

[JAVA] Thread 로 은행계좌 문제 (Bank Account Problem)를 확인해보자.

쓰레드란? 프로세스 내 하나의 실행 흐름 단위이다. 각 프로세스는 최소 1개 이상의 쓰레드를 가진다. (만약 그 쓰레드가 1개인 경우, 그 쓰레드를 메인 쓰레드라 한다) 멀티 스레드를 잘 구성한다면, 멀티 프로세스로 구성할 때에 비해 메모리 공유량이 줄어들어 시스템 자원 소모가 줄어든다. Context Switching 에 대한 오버헤드도 줄어든다. 하지만 프로그래머가 골치를 썩일 문제 또한 많은데 그런 예시 중 대표적인게 "은행 계좌 문제", "식사하는 철학자 문제" 이다. 이중 은행계좌 문제로 알 수 있는 건, Critical Section 문제다. 임계구역 문제인데 같은 자원을 서로 다른 쓰레드가 점유하고자 해서 생기는 문제점이다. 이 임계구역 문제를 해결하기 위해선 적절한 실행 흐름 제어가 필요하..

[SpringBoot] Mustache 에서 Key값이 Null or empty인 경우 처리하기

package com.hanium.hfrecruit.domain.user; import com.hanium.hfrecruit.domain.spec.PersonalSpec; import lombok.*; import javax.persistence.*; import java.util.List; @Data @Getter @AllArgsConstructor @NoArgsConstructor @ToString(exclude = "personalSpecs") @Entity @Table(name = "user") public class User { @GeneratedValue(strategy = GenerationType.IDENTITY) @Id private Long userNo; @Column(nullable ..

[python] 백준 14499번: 주사위 굴리기

www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net 테마 구현, 시뮬레이션 예상 소요시간 3~40분 아이디어 1. 주사위 배열 3*4 를 만든다. [1,1] 이 하늘은 보는 면. [3,1] 이 땅을 보는 면이다. 0x0 xxx 0x0 0x0 2. 방향을 1: 동 / 2: 서 / 3: 북 / 4: 남으로 정해 dx,dy 를 만든다. (이동) 3. 다음좌표가 (즉 굴린 후 지도 좌표) 유효하다면 다음..