본문 바로가기

알고리즘17

[SW Expert Academy 풀이/JAVA] 1289.원재의 메모리 복구하기 이번에 풀 문제는 1289번이다. SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제부터 보도록 하자. 문제 원재가 컴퓨터를 만지다가 실수를 저지르고 말았다. 메모리가 초기화된 것이다. 다행히 원래 메모리가 무슨 값이었는지 알고 있었던 원재는 바로 원래 값으로 되돌리려고 했으나 메모리 값을 바꿀 때 또 문제가 생겼다. 메모리 bit 중 하나를 골라 0인지 1인지 결정하면 해당 값이 메모리의 끝까지 덮어 씌우는 것이다. 예를 들어 지금 메모리 값이 0100이고, 3번째 bit를 골라 1로 설정하면 0111이 된다. 원래 상태가 주어질 때 초기화 상태 (모든 bit가 0)에서 원래 상태로 돌아가는데 최소 몇 번이.. 2021. 12. 23.
[SW Expert Academy 풀이/ JAVA] 1859.백만장자 프로젝트 이번에 새로 알고리즘 문제를 푸는 사이트를 찾았다. 여기도 생각보다 많은 문제가 있어서 많이 사용할 것 같다. 이번 문제는 여기에 들어가서 볼 수 있다. SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 이제 문제풀이로 들어가서 문제를 알려주겠다. 문제 25년 간의 수행 끝에 원재는 미래를 보는 능력을 갖게 되었다. 이 능력으로 원재는 사재기를 하려고 한다. 다만 당국의 감시가 심해 한 번에 많은 양을 사재기할 수 없다. 다음과 같은 조건 하에서 사재기를 하여 최대한의 이득을 얻도록 도와주자. 1. 원재는 연속된 N일 동안의 물건의 매매가를 예측하여 알고 있다. 2. 당국의 감시망에 걸리지 않기 위해 하루에 최대.. 2021. 12. 22.
[JAVA] 프로그래머스 - 없는 숫자 더하기 이번에 풀 문제는 없는 숫자 더하기이다. 문제 설명 0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 배열에 0 ~ 9까지 수가 있는데 없는 수를 더하란 것. == 0 ~ 9 모두 합친 값 = 45, 45 - 배열에 있는 수. 즉 반대로 생각하면 0 ~ 9까지의 수를 모두 합친다음 배열에 있는 수 를 빼면 된다. 제한사항 1 ≤ numbers의 길이 ≤ 9 0 ≤ numbers의 모든 수 ≤ 9 numbers의 모든 수는 서로 다릅니다. 코드를 보자 public int solution(int[] numbers) { int num = 45.. 2021. 11. 19.
[JAVA] 프로그래머스 - 두 개 뽑아서 더하기 이번에 푼 문제는 두 개 뽑아서 더하기이다. 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 더해서 나오는 수를 다 구하라는 듯하다. (자기 자신과는 더하기 X) 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 또한 중복 값도 들어가면 안 된다. 그럼 이제 코드를 보자 import java.util.HashSet; import java.util.Set; class Solution { public int[] solution(int[] numbers) { Set s.. 2021. 11. 18.
[JAVA] 프로그래머스 - 최대공약수와 최소공배수 이번에 풀어볼 문제는 최대공약수와 최소공배수이다. 문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 조건 두 수는 1 이상 1000000 이하의 자연수입니다. 이제 코드를 보자 public int[] solution(int n, int m) { int[] answer = new int[2]; answer[0] = Multiple(n,m); answer[1] = Min(n,m); return answer; } public static .. 2021. 11. 13.