자바
-
[Java] 왜 private 상수는 관습적으로 private static final로 선언할까?프로그래밍 언어/자바 & 코틀린 2019. 7. 30. 13:09
private static final과 private final의 차이 public으로 사용하는 상수 타입은 enum을 이용하고 있다. 클래스 내부에서만 간단하게 사용할 상수를 만들 때, 아무 생각 없이 private static final을 사용하고 있는 나 자신을 보며 미리 초기화 값을 넣고 상수로 쓸거면 private final만 써도 되지 않나? 라는 의문을 갖기 시작했다. 예를 들면 아래의 예시처럼 일반적으로 사용하고 있었다. public class ChocolateController { // logger를 선언할 때 private static final Logger logger = LoggerFactory.getLogger(ChocolateController.class); // 연차의 코드 값..
-
[Spring] JUnit 테스트 단위별(메서드별)로 1개씩 수행하는 방법웹 개발/Spring Framework 2018. 4. 25. 17:03
위처럼 JUnit 테스트를 하면서 한 JUnit 클래스 안에 메서드가 많을 경우, 그때 그때 하나의 단위 테스트만 테스트 해보고 싶을 것이다. 이때 할 수 있는 방법은 총 2가지가 있다. 첫째는 메서드 이름에 블록을 만든 후, 오른쪽 마우스를 클릭. 그리고 Run As>JUnit Test를 실행하는 것이다. 단축키로 Alt+Shift+X, T이다. 이는 동시에 Alt,Shift,X를 누르고 손을 뗀 다음, T를 눌리면 된다.( ',' 쉼표 표시는 한 템포 쉬라는 뜻인가보다.) 두번째 방법은 소스창 아래에 JUnit 탭에서 테스트를 원하는 메서드에 마우스를 대고, 오른쪽 마우스 버튼을 클릭하고 Run을 실행한다. 이렇게 하면 하고 싶은 테스트를 하나씩만 수행할 수 있어 한 클래스의 모든 test 케이스가 ..
-
[java] 백준 알고리즘 2839번 설탕 배달 풀이 소스알고리즘/백준 알고리즘 2018. 4. 3. 11:08
사칙연산 종류 문제다. 고민하다가 5를 나눠보고 그 나머지 값들로 답을 찾으면 되겠다 싶었다. n을 5로 나눴을 때, 나머지가 1일 경우에는 몫에서 -1을 해주면 5+1을 만들어줄 수 있다. 즉, 6이 되기 때문에 3kg 봉지 2개에 담으면 된다. 나머지가 2일 경우에는 몫에서 -2를 해주면 10+2가 된다. 즉, 12가 되기 때문에 3kg 봉지 4개에 담을 수 있다. (단, n이 7일 경우에는 성립 안됨) 나머지가 3일 경우에는 그냥 3kg 봉지 1개 더 담아주면 된다. 나머지가 4일 경우에는 몫에서 -1을 해주면 5+4가 된다. 즉, 9가 되기 때문에 3kg 봉지 3개에 담을 수 있다.(단, n이 4일 경우에는 성립 안됨) 나머지가 0일 경우에는 5kg 봉지에 다 담아주면 된다. 그럼 4와 7 이외에..
-
[java] 백준 알고리즘 1934번 최소공배수 풀이 소스알고리즘/백준 알고리즘 2018. 4. 3. 11:03
난 문과에 비전공 출신이므로 수학을 싫어하진 않지만, 복잡한 공식을 잘 모르는 편이다. 최소공배수를 구하는 방법도 아래와 같은 방법 밖에 생각나지 않았다. 유클리드 호제법이라는 공식을 이용해 훨씬 빠른 코드를 만들어내시는 분들도 계셨지만, 내가 아는 지식으로 해답을 찾기 위해 고민해서 해결했다. 위에 올려둔 그림을 그대로 소스로 옮겨 놓으려고 애썼다. '컴퓨터가 인간처럼 대충 이 수가 들어가면 빠르겠다'같은 경우를 만들어주기 힘드니 숫자가 차례대로 올라가면서 나눠주는 방식으로 만들었다. 아래 풀이소스 * 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 public cl..
-
[java] 백준 알고리즘 1654번 랜선 자르기 풀이 소스(이분탐색)알고리즘/백준 알고리즘 2018. 4. 2. 20:57
이 문제도 역시나 생각없이 int로 선언하면 수도 없이 런타임에러를 맛 볼 수 있다. 생각해보면 long이 되는 변수가 많다. 그리고 문제를 제대로 읽지 않아서 에러를 계속 못 찾았는데, 최소값의 초기값을 0으로 선언한게 문제였다. 문제에서 랜선 길이는 자연수라고 했다. 그 말은 0이 아니라 1이 되어야 한다. 소스는 아래에~(설명은 주석 참고) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748public class Baekjoon1654 { public static void main(String[] args) throws IOException { BufferedReader br = new Buff..
-
[java] 백준 알고리즘 1546번 평균 풀이 소스알고리즘/백준 알고리즘 2018. 3. 30. 18:37
우리가 아는 평균을 구하는 것이지만, 문제에서 단순히 점수 총합/과목의 갯수가 아니라, 각각 받은 점수를 새로 계산해서 재정의하고 있다. 그리고 그 결과값의 평균을 구하는 문제이다. 아래는 소스. 123456789101112131415161718192021222324public class Baekjoon1546 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); // 과목의 개수 String[] preGradeArray = br.readLine..
-
[java] 백준 알고리즘 18071번 X보다 작은 수 풀이 소스(if문)알고리즘/백준 알고리즘 2018. 3. 30. 18:17
if문을 활용하는 쉬운 알고리즘 문제이다. 소스는 아래. 123456789101112131415161718192021222324252627public class Baekjoon10871 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] inputArray = br.readLine().split(" "); int n = Integer.parseInt(inputArray[0]); // 주어진 배열의 크기인 N int x = Integer.parseInt(inputArray[1]); // 주어진 정수 X..
-
[java] 백준 알고리즘 2805번 나무자르기 풀이 소스(이분 탐색)알고리즘/백준 알고리즘 2018. 3. 30. 17:51
여기서 minHeight와 maxHeight에 중간값이 들어갈 때 각각 +1, -1을 해주지 않으면 시간초과가 발생했다. 그리고 나무길이들의 총 합이 int 범위를 넘어갈 수도 있으므로 long을 선언해주었다.(이런 부분들 때문에 알고리즘을 풀 때마다 런타임에러를 수도 없이 보게 된다.) 설명은 주석으로 했다~ 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657public class Baekjoon2805 { public static void main(String[] args) throws IOException { BufferedReader br = new Buffer..