알고리즘 6

백준 2108(JAVA)

문제 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 산술평균 더해서 나누면 되는데, -1.8인 경우 반올림하면 -1이아닌 -2가 되어야함. 이 부분을 처리하기 위해 나는 나눈 값 절대값으로 바꾼 뒤, Math.round를 이용 오랜만에 자바를 해서 그런지 나눌때 auto casting되는걸 까먹었당. int / int => int가 된다. 그래서 피연산자 둘중 하나를 명시적으로 double로 casting 후 나눠야한다. 중앙값 ArrayList를 이..

algorithm 2022.06.15

백준 2012(JAVA)

문제 2007년 KOI에 N명의 학생들이 참가하였다. 경시일 전날인 예비소집일에, 모든 학생들은 자신이 N명 중에서 몇 등을 할 것인지 예상 등수를 적어서 제출하도록 하였다. KOI 담당조교로 참가한 김진영 조교는 실수로 모든 학생의 프로그램을 날려 버렸다. 1등부터 N등까지 동석차 없이 등수를 매겨야 하는 김 조교는, 어쩔 수 없이 각 사람이 제출한 예상 등수를 바탕으로 임의로 등수를 매기기로 했다. 자신의 등수를 A등으로 예상하였는데 실제 등수가 B등이 될 경우, 이 사람의 불만도는 A와 B의 차이 (|A - B|)로 수치화할 수 있다. 당신은 N명의 사람들의 불만도의 총 합을 최소로 하면서, 학생들의 등수를 매기려고 한다. 각 사람의 예상 등수가 주어졌을 때, 김 조교를 도와 이러한 불만도의 합을 ..

algorithm 2021.07.22

백준 2212(JAVA)

문제 (너무 긴관계로 핵심만 딱 설명하겠다.) 직선위에 센서가 여러개 있다. 센서의 좌표는 정수로 입력되어진다.(일직선 위에 센서가 있는 것이다.) 센서의 개수는 N개이다. 해당 센서를 수신해야하는 집중국 K개를 세워야한다. 집중국들은 모든 센서를 수신하는 위치에 위치하여야한다. 여기서 문제!! 집중국이 센서로부터 수신 가능 영역의 길이합의 최소를 구하라 문제가 너무 난해하다 예제로 설명하겠다. 센서의 위치를 나타내는 정수 1 6 9 3 6 7 이를 오름차순 정렬하면 1 3 6 6 7 9 이중 집중국 2개를 설치해야하는데 센서 수신가능영역의 합을 최소로하라! (1 3)을 수신하는 센서 1개 -> 영역의 길이 2 (6 9)를 수신하는 센서 1개 -> 영역의 길이 3 합 : 5 풀이 일단 오름차순한다음 적당..

algorithm 2021.07.21

백준 9009(JAVA)

문제 입력되는 수에 대해서 최소의 개수의 피보나치의 합이 어떠한 수가 되는 피보나치 수들을 구하여라 풀이 문제를 보자마자 든 생각은 일단 dp테이블에 피보나치의 결과를 메모이제이션 해야겠단 생각이 들었다. 피보나치의 합을 구하는데 피보나치의 개수가 최소의 개수가 되야하므로 입력되는 정수 num에 가장 근접한(같거나 작은) 피보나치의 결과를 num에서 빼나가면 되겠단 생각이들었다. 어떠한 수는 피보나치 하나의 값이거나 여러개의 합으로 구성될수 있으므로 어떠한 수가 입력되던간에 정답은 나온다. 입력되는 수에 가장 근접한 수를 빼나가면 최소의 개수의 피보나치일것이다. 즉, 그리디알고리즘이다. 코드 package baekjoon.그리디; import java.io.*; import java.util.ArrayL..

algorithm 2021.07.14

백준 17413(JAVA)

문제 주어진 문자열 S중 단어만 찾아서, 단어만 뒤집어라 문제 자체는 이해하기가 쉽다. 단어는 태그가 아니며, 단어끼리는 ' ' 공백으로 띄워져있다. 풀이 단어가 시작하는 index를 저장할 start변수를 통해 현재 index까지의 StringBuilder를 만들고 reverse()메서드로 뒤집은뒤 replace메서드로 다시 부분 문자열을 변경하면 된다! java로 풀면 불변 클래스인 String으로는 데이터 수정이 되지않으므로 StringBuilder로 하는것이 적절하다.(String은 새로운 객체를 생성함, 하나의 인스턴스에서 수정이 되지않음) 코드 package baekjoon.구현; import java.io.*; public class Main17413 { static Strin..

algorithm 2021.07.12