java
-
[백준 2822번] 점수 계산(Java 풀이)Algorithm/정렬(Sort) 2020. 2. 21. 21:57
백준알고리즘 2822번 : 점수 계산 8문제 중, 점수가 가장 높은 5개 문제의 점수만 합쳐서 출력하고 해당 문제들의 번호를 출력하는 문제이다. 각 점수만 주어지고, 순서는 주어지지 않기 때문에 점수와 순서를 field로 갖는 클래스를 생성하고, 해당 클래스가 Comparable 인터페이스를 implements(구현)하도록 한다. 클래스의 객체를 생성하고, instance 변수인 점수에는 Scanner로 받아오는 값을 담는다. instance 변수인 점수는 직접 담아준다. for문을 통해 점수를 받아오면서 총합을 구해놓고, 점수를 크기순으로 정렬한 뒤에 낮은 3개의 점수를 총합에서 뺴고 출력한다. 높은 점수의 순번을 다시 오름차순으로 정렬하여 출력한다. 소스 ▽ 더보기 import java.util.Ar..
-
[백준 1094번] 막대기 (Java 풀이)Algorithm/기타 2020. 2. 16. 00:38
백준알고리즘 1094번 : 막대기 문제의 설명은 굉장히 복잡한 듯 싶지만, 사실은 64 이하의 숫자를 2진수로 만들었을때, 1의 숫자를 구하는 것과 같다. 왜냐하면 똑같은 길이의 막대가 2개가 쓰일일이 없고, 우리는 막대를 계속 쪼개서 1까지 만들 수 있기 때문이다. 숫자를 2진수로 변환한 뒤, 1의 갯수를 세는 방식도 있지만, 나는 주어진 숫자를 받고 64에서 2씩 나누면서 주어진 숫자보다 더 작은 값이나오면 주어진 숫자를 차감시키는 방식으로 접근했다. 풀이 과정 1. 만들고자 하는 stick의 길이 X를 받는다. 2. stick의 초기 길이(64)에서 반씩 나누어주면서, 길이 X보다 더 작은 값이 나오면 X 값을 해당 숫자만큼 차감시키고, 차감 횟수를 센다. 3. X 값이 0이 나올때까지 진행한 뒤,..
-
[백준 1302번] 베스트셀러(Java 풀이)Algorithm/정렬(Sort) 2020. 2. 15. 15:49
백준알고리즘 1302번 : 베스트셀러 기존에 풀었던 문제와 조금은 달랐던 것이, sort를 할 숫자와 문자를 주어주었던 반면, 이번엔 직접 받아서 어느 책이 몇개 팔렸는지 세고, 이를 정렬하여 출력하여야 했기 때문이다. 그래서 solved.ac에서 silver 4레벨로 책정된 것인지. 물론 체감은 크지 않았다. 책의 이름(String)과 판매된 갯수(int)를 field로 갖는 book 객체를 선언하고, Comparable interface를 implements하여 compareTo method를 override하는 것 까지는 일치하다. 차이는 book 객체를 parameter로 받는 ArrayList에 book 객체를 담을 때이다. ArrayList내에 담겨 있는 book 객체들의 String fiel..
-
[백준 10825번] 국영수 (Java 풀이)Algorithm/정렬(Sort) 2020. 2. 14. 19:28
백준알고리즘 10825번 : 국영수 정렬 공부를 하기에 아주 좋은 문제라고 생각한다. 국어 점수는 내림차순, 국어 점수가 같다면, 영어 점수는 오름차순, 영어 점수가 같다면, 수학 점수는 내림차순, 수학 점수도 같다면, 이름을 오름차순으로 정렬하는 문제이다. 국어, 영어, 수학 점수와 이름을 field로 갖는 객체를 생성하고, 해당 객체가 Comparable을 implements하도록 한다. 그리고 CompareTo method를 override하여 조건에 맞게 정렬하도록 만들어준다. 이름을 오름차순으로 정렬할 때는 아스키 코드순으로 정렬하는 것으로 명시가 되어있기 때문에, 단순히 CharAt method를 이용하여 sort하였다. 풀이 과정 1. 객체를 생성하여 이름(String), 국(int), 영(..
-
[백준 10610번] 30 (Java 풀이)Algorithm/정렬(Sort) 2020. 2. 9. 00:28
백준알고리즘 10610번 : 30 주어진 숫자를 30의 배수, 그 중에서도 가장 큰 수가 되도록 정렬하는 문제이다. 만약 30의 배수가 되지 못하는 숫자가 주어진다면 -1을 출력하기로 한다. 숫자를 string 배열으로 받은 뒤, 이를 split해서 int배열에 담았다. 해당 int 배열을 내림차순으로 정렬해서 출력하면 되지만, 먼저 30의 배수가 되는 조건을 충족시키지 못할 때의 조건식을 넣어주도록 한다. 30의 배수가 되려면 3의 배수이면서, 10의 배수여야한다. 10의 배수가 되기 위한 조건은 int 배열내에 숫자 0이 하나라도 있으면 되는 것이고, 3의 배수가 되기 위한 조건은 int 배열내의 숫자들의 합의 3의 배수여야한다는 것이다. filtering을 마친 뒤에 정렬 및 출력을 하면 된다. 풀..
-
[백준 10814번] 나이순 정렬 (Java 풀이)Algorithm/정렬(Sort) 2020. 2. 8. 16:21
백준알고리즘 10814번 : 나이순 정렬 받아온 회원들을 정렬하는 문제이다. 정렬의 조건은, 첫째. 나이를 오름차순으로 정렬할 것 둘째. 나이가 같다면 먼저 가입한 순(먼저 받은 순) 대로 정렬할것. 나이는 주어지기 때문에 받아온 뒤 정렬하면 되지만, 가입순서는 주어지지 않기에 Age라는 객체에 받아온 순서를 담을 수 있도록 정수 field를 하나 추가했고 자체적으로 순서를 넣어주었다. 풀이 과정 1. 나이(int), 이름(String), 등록 순서(int)를 field로 갖는 객체를 생성한다. 2. 객체가 Comparable을 implements 하도록 하고 compareTo method를 override(재정의)하여 나이순, 등록순으로 정렬하도록 한다. 3. 1번에서 생성한 객체를 List에 담고, ..
-
[백준 5635번] 생일 (Java 풀이)Algorithm/기타 2020. 2. 5. 22:45
백준알고리즘 5635번 : 생일 나이가 많은 사람부터 순서대로 정렬하는 문제이다. 태어난 연도, 월, 일 세 번을 비교해야 하기 때문에 단순 정렬이 아닌 생년월일과 이름을 필드로 갖는 객체를 만들고, 이 object에 Comparable을 구현(Implements)한다. Comparable interface안에는 int compareTo(T a)라는 단 하나의 interface method만 존재한다. 해당 method는 리턴값을 3가지로 분류하고 있는데, 이는 다음과 같다. 1. parameter보다 더 작은 경우 음수 return. 2. parameter보다 더 큰 경우 양수 return. 3. parameter와 같은 경우 0 return. Birthday라고 명명한 객체안에서 어떤 필드 값을 우선..
-
[백준 11650번] 좌표 정렬하기 (Java 풀이)Algorithm/기타 2020. 1. 28. 22:29
백준알고리즘 11650번 : 좌표 정렬하기 N개의 좌표를 오름차순으로 정렬하는 문제이다. x좌표가 같으면 y좌표를 오름차순으로 정렬해서 출력해야한다. 정렬 조건이 추가되었기 때문에, Arrays.sort()에 Comparator 인터페이스를 재정의해서 사용해야한다. 풀이 과정 1. 2차원 배열에 각 좌표를 담는다. 2. Arrays.sort(arr, new Comparator){}로 Comparator를 재정의함으로써 'x축 값이 같다면, y축 값을 비교해준다.'라는 조건식을 추가해주어 return하도록 한다. 3. 정렬된 배열을 출력한다. 소스 ▽ 더보기 import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; pub..