Sort
-
[백준 10816번] 숫자 카드 2(Java 풀이)Algorithm/정렬(Sort) 2022. 4. 9. 17:05
백준알고리즘 10816번 : 숫자 카드 2 (Solved.ac 난이도 Silver4) 특정 숫자들의 갯수를 카운트하고 출력하는 문제이다. HashMap을 이용하여 풀수 있다. ↑클릭시 문제 link로 이동합니다.😊 예전에 풀었을 때는 시간초과가 나서 못풀었는데, HashMap을 이용하는 것 뿐만아니라 반복문을 돌면서 단순 출력을 하는것이아니라 StringBuilder에 담는 등의 처리가 필요해보인다. 풀이 과정 1. HashMap에 숫자카드를 담는다. 이때 카드번호를 key값으로 담고 갯수를 value로 담는다. 기존 카드번호가 있다면 key값을 호출하여 갯수를 하나더해준다. 2. 상근이가 가진 값을 받아오면서 해당 key값이 있다면 value를, 없다면 0을 append한다. * 카드번호별 value를..
-
[백준 10867번] 중복 빼고 정렬하기(Java 풀이)Algorithm/정렬(Sort) 2020. 2. 22. 12:12
백준알고리즘 10867번 : 중복 빼고 정렬하기 중복을 포함한 숫자를 Testcase만큼 찍어내고, 이 중에서 중복한 수는 빼고 정렬하는 문제이다. 받아올 수 있는 줄의 갯수는 최대 10만개인 반면, 수는 절댓값이 1000보다 작거나 같은 정수이기 때문에 받으면서 중복이 있으면 그때 그때 걸러주는 게 낫겠다고 생각했다. (다 받고 정렬 후 거르는것과 비교를 해봐야겠지만) 풀이 과정 1. ArrayList를 만들어놓고, Scanner로 값을 담도록한다. 2. 단, 담는 조건을 첨가한다. A. ArrayList에 있는 모든 값들을 불러와, 하나라도 동일한 값이 있으면 다음 숫자를 받는다. B. A조건에 걸리지 않은 경우, 숫자를 List에 추가한다. 3. 조건으로 걸러진 List를 정렬한 뒤, 출력한다. 소..
-
[백준 2822번] 점수 계산(Java 풀이)Algorithm/정렬(Sort) 2020. 2. 21. 21:57
백준알고리즘 2822번 : 점수 계산 8문제 중, 점수가 가장 높은 5개 문제의 점수만 합쳐서 출력하고 해당 문제들의 번호를 출력하는 문제이다. 각 점수만 주어지고, 순서는 주어지지 않기 때문에 점수와 순서를 field로 갖는 클래스를 생성하고, 해당 클래스가 Comparable 인터페이스를 implements(구현)하도록 한다. 클래스의 객체를 생성하고, instance 변수인 점수에는 Scanner로 받아오는 값을 담는다. instance 변수인 점수는 직접 담아준다. for문을 통해 점수를 받아오면서 총합을 구해놓고, 점수를 크기순으로 정렬한 뒤에 낮은 3개의 점수를 총합에서 뺴고 출력한다. 높은 점수의 순번을 다시 오름차순으로 정렬하여 출력한다. 소스 ▽ 더보기 import java.util.Ar..
-
[백준 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라고 명명한 객체안에서 어떤 필드 값을 우선..