목록데이터 엔지니어링 정복/Algorithm (159)
지구정복
https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net -문제해설 처음에 c, p, z, y 변수를 만들어서 연속되면 각 변수를 1씩 증가시키고 새로운 변수가 나오면 새로운 변수값을 1씩 증가시켰는데 이럴 필요가 없었다. 그냥 우측 혹은 아래측 문자가 현재 문자와 같으면 cnt 변수를 1씩증가시키고 max 값과 비교, 같지 않다면 cnt를 1로 초기화시키고 max값과 비교하는 식으로 풀면 되는 문제였다. 1. n을 입력받고 문자열 입력받은 뒤 .charAt()으로 문자로 나눠서 chu배열에 저장 2. 먼저 각 행에 대해서 우측사탕과 교환하고 최대값 구하는 과정을 반복한..
https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net -문제해설 처음에는 처음부터 일일히 다 더해보려고 했다. 예를들면 arr배열에 아홉 난쟁이의 키가 있다고 하면 아래 숫자는 arr의 인덱스를 나타낸다. 1 2 3 4 5 6 7 1 2 3 4 5 6 8 1 2 3 4 5 6 9 1 2 3 4 6 7 8 1 2 3 4 6 7 9 1 2 3 4 6 8 9 1 2 3 5 6 7 8 1 2 3 5 6 7 9 ..... 하지만 이를 구현하는게 굉장히 까다로웠다. 결..
https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net -문제해설 처음에는 n까지 소수를 매번 구한 다음 이중포문으로 일일히 n과 같은 값을 찾아서 출력했지만 시간초과가 나왔다... 결국 아래 블로그님의 코드를 참고해서 풀었다. https://brenden.tistory.com/52 먼저 입력값을 받기 전에 미리 1_000_000까지 소수를 에라토스테네스의 체를 이용해서 구해준다. boolean타입의 sosu배열에 값이 true..
https://www.acmicpc.net/problem/17425 17425번: 약수의 합 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net -문제해설 전에 풀었던 약수의 합2와 비슷하지만 테스트케이스 개수로 인해서 약수의 합2와 같은 풀이로 풀면 시간초과가 된다. 따라서 미리 f()와 g()를 만들고 테스트케이스의 n값에 따라 답을 출력하는 식으로 풀어야 한다. 먼저 f()를 만드는 방법은 모든 약수에는 1을 포함하고 있으므로 Arrays.fill() 메서드로 f() 배열에 1을..