정렬
-
[백준 2473번] 세 용액 (Java 풀이)Algorithm/정렬(Sort) 2022. 5. 6. 20:27
백준알고리즘 2473번 : 세 용액 (Solved.ac 난이도 Gold4) https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 숫자 3개를 선택하여 가장 절대값이 가장 작은 숫자를 만드는 조합을 출력하는 문제이다. 두개라면 two pointer를 사용하여 풀 수 있을꺼라 생각하였는데, 고민하다가 하나를 고정하는 대신 나머지 2개를 투 포인터로 fix하는 방법은 어떨까 생각해보았다. 물론 내가 작성한 logic은 중복으로 탐색하..
-
[백준 1082번] 배 (Java 풀이)Algorithm/정렬(Sort) 2022. 4. 15. 19:36
백준알고리즘 1082번 : 배 (Solved.ac 난이도 Gold5) 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 문제이다. 이 문제에서 크레인의 무게제한을 비중있게 생각할 필요는 없다. 무게가 많이 나가는 박스부터 옮기되 들수 있는 무게가 적은 크레인이라도 어느 하나의 박스라도 옮길 수 있도록 체크해주면 된다. 따라서 크레인과 박스를 내림차순으로 정렬하고 크레인 배열이 박스 배열을 돌면서 옮겨주면 된다. 옮긴 박스는 체크하고, 크레인 배열이 한 번 돌때마다 시간을 1씩 늘린다. https://www.acmicpc.net/problem/1092 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000..
-
[백준 3273번] 두 수의 합 (Java 풀이)Algorithm/정렬(Sort) 2022. 4. 12. 19:10
백준알고리즘 3273번 : 두 수의 합 (Solved.ac 난이도 Silver3) 더해서 자연수 x를 만족하는 쌍이 몇개 있는지 확인하는 문제이다. https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 처음에는 100만까지 숫자가 주어진다는 것을 확인하여 Int 배열의 크기를 100만으로 만들고, 받아온 숫자값에 1을 넣어서 숫자가 1이면 count한다, 라는 식으로 풀어보았다. 예제를 반영하자..
-
[백준 5052번] 전화번호 목록 (Java 풀이)Algorithm/정렬(Sort) 2022. 4. 11. 19:22
백준알고리즘 5052번 : 전화번호 목록 (Solved.ac 난이도 Gold4) 한 전화번호가 다른 전화번호의 접두어인 경우를 찾는 문제이다. String Type의 실수를 정렬하는 Case를 고민하여 풀 수 있다. ↑클릭시 문제 link로 이동합니다.😊 이 문제를 풀면서 발생한 애로사항 첫번째는 문제의 몰이해다. 문제에서 제시한 제한 조건은 하나의 전화번호가 다른 번호의 '접두어'만 아니여야한다는 것이다. 예를들어 번호 목록이 911과 911123이면 911이 911123의 접두어이므로 NO를 출력해야하는게 당연하나 나는 포함관계가 아니여야한다고 착각하여 911과 11911의 case에도 NO를 출력해야 한다고 판단하고 문제를 풀었다. (시간 초과가 계속 발생하여 틀린줄도 몰랐다..) 역시 소스를 짜기..
-
[백준 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를..