본문 바로가기

정렬55

[자바] 백준 18310 - 안테나 (java) 문제 : boj18310 필요 알고리즘 개념 그리디, 정렬 그리디로 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 처음엔 단순히 평균 구해서 평균과 가장 가까운 집을 선택하면 될 것이라 생각했다. 예제 입력 1도 그렇게 해보니 맞길래 그렇게 하니 당연히 틀렸다. 아래와 같은 경우, 평균으로 구하면 6.8 이므로 가장 가까운건 '6'이다. 그래서 '6'을 골라보면 차이의 합은 14이다. 하지만 실제론 9.. 2023. 2. 16.
[자바] 백준 18248 - 제야의 종 (java) 문제 : boj18248 필요 알고리즘 개념 정렬, 그리디 그리디라고 봐야할진 잘 모르겠다. 아무튼 규칙을 찾아 정렬해서 해결할 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제를 이해하기 상당히 어려운 문제였던 것 같다. 결국 중요한건 N명의 사람이 종에서 특정 거리만큼 떨어져 있고, 그 위치가 바뀌지 않는다('타종이 진행되는 동안 사람들은 종소리에 집중하기 위해 움직이지 않는다')는 점이다. 그렇다면 이 문제.. 2023. 2. 15.
[자바] 백준 1448 - 삼각형 만들기 (java) 문제 : boj1448 필요 알고리즘 개념 그리디, 정렬 그리디로 접근해서 풀 수 있다. 수학 삼각형의 세 변을 이루는 규칙을 알아야 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 삼각형의 세 변을 이루는 규칙만 알면 풀 수 있다. 간단한데, 가장 긴 변이 있을 때 나머지 두 변의 합이 가장 긴 변의 길이보다 커야 한다. 아래 이미지를 보면 이해 가능할 것 같다. 그리고 이 문제에서 원하는건 '삼각형을 만들 수.. 2023. 2. 12.
[파이썬] 프로그래머스 - 과일 장수 (Lv1, Python) 문제 : Programmers-과일 장수 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 개념 정렬, 그리디 그리디로 접근해서 풀 수 있다. 그리디 접근을 위해 정렬이 필요하다. 풀이 사과의 개수가 n개라고 해보자. 그렇다면 n%m 개 만큼은 버려져야 한다. 이 때 버려져야 하는 사과는 당연히 점수가 가장 낮은 사과들이다. 또한 이 문제는 m개씩 담은 상자에서 가장 점수가 낮은 사과를 기준으로 가격이 정해진다. 이 때 m개씩 짝지었을 때 낮은 사과가 가장 높게 나오는 방법은 내림차순으로 정렬 후 m개씩 고르는 방법이다(그리디). 위의 두 가지 모두 내림차순으로 정렬 후, m개씩 짝짓고 남는건 버리는 규칙에 부합한다. .. 2023. 2. 6.
[자바] 백준 9076 - 점수 집계 (java) 문제 : boj9076 필요 알고리즘 개념 정렬, 구현 정렬을 이용해 문제에서 제시된대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 로직은 아래와 같다. 각 테스트마다 [A]____5개의 점수를 입력받는다. [B]____5개를 정렬한다. (정렬 후 1번째와 5번째 값은 최고점과 최저점이므로 무시한다.) [C]________if 2번째 점수와 4번째 점수가 4이상 차이난다면 KIN을 출력한다. [D]_.. 2023. 1. 25.
[자바] 백준 1422 - 숫자의 신 (java) 문제 : boj1422 필요 알고리즘 개념 정렬, 그리디 그리디로 접근해서 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 K==N 이라고 생각해보자. 즉, 모든 숫자를 1번씩 배치해서 가장 큰 수를 만들어야 한다. 어떤 수를 먼저 배치하는게 이득일까? 어차피 만들어진 수의 자리수는 K개의 숫자들의 자리수의 합과 동일하다. 따라서 단순히 큰 수가 먼저오는건 의미가 없다. 예를들어 1과 100 중에 크다고 1.. 2023. 1. 24.
[자바] 백준 4055 - 파티가 좋아 파티가 좋아 (java) 문제 : boj4055 필요 알고리즘 개념 정렬, 그리디 더 범위가 좁은 것 부터 차례차례 골라나가면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 문제에서 좀 애매한 부분부터 짚고 넘어가보자. - "시작시간과 끝시간이 같은 파티가 주어질 수도 있다." -> 최소 30분간은 참여해야하므로, 참여할 수 없는 파티이다. 버려도 되는 입력값이다. - "아무리 늦게 끝나도 24시에는 끝나게 된다." -> 따라서 .. 2023. 1. 20.
[자바] 백준 21740 - 도도의 수학놀이 (java) 문제 : boj21740 필요 알고리즘 개념 그리디, 정렬, 문자열 그리디로 풀 수 있는 문제이다. 다만 플래문제답게 세세하게 예외를 생각해봐야하고, 구현이 좀 까다로울 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 사실 이 문제가 플래인 이유는 '단 한 번, 한 수를 두 번 사용할 수 있다.' 이것 때문이다. 아마 저 조건이 없었으면 실버급이었을 것 같다. 그러므로 우선 '단 한 번, 한 수를 두 번 사용할 수 .. 2023. 1. 11.
[자바] 백준 9024 - 두 수의 합 (java) 문제 : boj9024 필요 알고리즘 개념 정렬, 투 포인터 투 포인터로 해결 가능한 문제이다. 투 포인터 사용을 위해 정렬도 해줘야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 두 정수의 합이 K와 가장 가까운 두 정수의 조합의 수를 찾는 문제이다. 얼핏 K와 동일한 수가 아니라 K와 가장 가까운 두 정수를 찾는거여서 투 포인터로 해결이 안된다고 생각할 수 있다. (예를들어 K=8이고, 두 정수의 합이 8인 경우가.. 2023. 1. 4.
[자바] 백준 25305 - 커트라인 (java) 문제 : boj25305 필요 알고리즘 개념 정렬, 구현 정렬을 통해 문제에서 제시된 방식대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. arr[N] 에 각 학생의 점수를 입력받는다. 2. arr을 정렬한다. 3. 내림차순으로 정렬했다면 앞에서부터 k번째 학생의 점수를 출력한다. 오름차순으로 정렬했다면 뒤에서부터 k번째 학생의 점수를 출력해준다. 코드 : github import java.io.Bu.. 2022. 12. 4.