전체 글(604)
-
백준(Backjoon) 10866, 덱
문제풀이 Deque 클래스를 선언하고 필드 멤버로 List 리스트를 선언한다. 소스코드 public class Main { static class Deque { private List deque; Deque() { deque = new ArrayList(); } void push_front(int x) { deque.add(0, x); } void push_back(int x) { deque.add(x); } int pop_front() { if(empty()==1) { return -1; } return deque.remove(0); } int pop_back() { if(empty()==1) { return -1; } return deque.remove(size()-1); } int size() { ..
2021.06.25 -
Comparable vs Comparator in Java
자바는 클래스의 데이터 멤버를 사용하여 객체를 정렬할 수 있는 2가지 인터페이스를 제공한다. Comparable Comparator Comparable 인터페이스의 사용 Comparable 객체는 자신을 다른 개체와 비교할 수 있다. Comparable 인터페이스를 사용하고자 하는 클래스는 객체들을 비교하기 위해서 java.lang.Comparable 인터페이스를 상속(implements)받아 구현해야 한다. 예를 들어 Movie 클래스가 존재할때 데이터 멤버로는 등급(rating), 이름(name), 개봉년도(year)와 같은 멤버를 가질수 있다. 개봉년도를 기반으로 영화들의 정렬을 원한다고 가정할 때 Movie 클래스는 Comparable 인터페이스를 상속받을 수 있다. 그리고 Movie 클래스는 C..
2021.06.25 -
백준(Backjoon) 1966, 프린터 큐
문제풀이 위 문제를 해결하기 위해서 Node 클래스를 정의하였다. Node 클래스는 id와 priority 정수형 필드를 가지고 있다. id 필드를 정의한 이유는 지정한 문서가 몇 번째로 인쇄되었는지 알기 위해서이다. 이 글에서는 해당 변수를 target이라 정의하였다. priority 필드를 활용하여 알지 못하는 이유는 priority 필드는 중복이 가능하기 때문이다. 문제핵심 큐 구조의 맨 앞에 존재하는 인쇄하고자 하는 문서가 다른 문서들보다 우선순위(priority)가 제일 높은지 검사하는 것 만약 맨 앞의 인쇄 문서가 다른 문서들보다 우선순위가 작은 경우 큐 구조 맨 뒤로 보내야 하는 것 마지막으로 우선순위가 제일 높아 큐 구조에서 제거될때 제거된 문서의 id가 몇 번째로 인쇄되었는지 궁금한 ta..
2021.06.25 -
백준(Backjoon) 1212, 8진수 2진수
문제풀이 입력으로 8진수가 입력되었다고 가정합니다. 위 문제를 해결하기 위해서 저는 입력을 정수가 아닌 문자열(String)로 받았습니다. 그리고 반복문을 통하여 앞에서부터 문자열 타입 숫자를 2진수로 변환하여 StringBuilder 타입의 변수에 이어 붙였습니다. 단, 여기서 주의할 점은 입력으로 0이 들어왔을 경우에는 0을 반환하도록 설정하였습니다. 소스코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { private static String[] map = {"000","001","010","011","100","101","110","111"};..
2021.06.24 -
백준(Backjoon) 10988, 팰린드롬인지 확인하기
문제풀이 팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어이다. 따라서 팰린드롬인지 확인하기 위해서는 입력으로 받은 문자열과 해당 문자열을 거꾸로 뒤짚은 문자열과 비교하여 동일한지 검사하면 된다. StringBuilder 클래스의 reverse() 메서드를 호출하면 쉽게 문자열을 뒤짚을 수 있다. 소스코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { /** * 매개변수(str)의 문자열이 팰린드롬인지 검사 * 팰린드롬이란 앞에서 읽으나 뒤에서 읽으나 동일한 문자이다. * ex) level */ public static int solution..
2021.06.23 -
백준(Backjoon) 10610, 30
문제풀이 배수 판정법에 따르면 30의 배수 판정법은 3의 배수이면서 일의 자리가 0인수이면 30의 배수로 판정 가능하다. 3의 배수는 각 자리의 수의 합이 3 배수이면 3의 배수이다. 따라서 30의 배수는 각 자리의 합이 3의 배수이고 일의 자리가 0인수이면 30의 배수이다. N은 10^5개의 숫자로 구성되어 있기 때문에 정수 변수로 받지 않고 문자열 변수로 받아서 각 자리의 숫자를 쪼개서 정수형 리스트에 저장한다. 그리고 30배수가 되는 가장 큰수를 찾기 위해서 저장한 정수형 리스트를 내림차순으로 정렬하여 30 배수 판정법을 적용한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; i..
2021.06.23