본문 바로가기

알고리즘23

[JAVA-1654] 랜선 자르기(결정 알고리즘) 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 링크를 클릭하면 해당 문제로 이동합니다. 해당 문제에 대한 시각은 내가 결정 알고리즘이라는 것을 알기 전과 후로 나뉜다. 내 기준에서는 나름 어려웠던 문제인데 구글링하지 않고 혼자 풀어낸 것에 대한 성취감이 느껴져서 어떻게 풀었는지 잊지 않기 위해 기록해본다. 결정 알고리즘이란? 결정 알고리즘이라는 단어는 실제 공식적으로 사용 되어지는 단어는 아니고, 내가 개인적으로 인프런에서 수강중인 강의의 강사님께서 만든 단어인거 같다. 어쨌든,.. 2023. 10. 27.
[JAVA] 두 배열 합치기 접근하기 처음엔 입력받은 원소들을 배열에 담아야겠다고 생각했는데 첫 번째 배열과 두 번째 배열의 크기가 다를 경우도 감안해야 돼서, 배열보다는 리스트가 낫겠다고 생각했다. 그래서, 두 개의 리스트를 만든 다음에 각각의 리스트에 원소를 넣고 최종적으로 두 배열의 원소를 합친 리스트에서 정렬 후에 출력하면 되겠다고 생각했다. TO-DO 1. 정수 N을 입력 받고 반복문으로 첫 번째 리스트에 원소 값들을 넣는다. 2. 정수 M을 입력 받고 반복문으로 두 번째 리스트에 원소 값들을 넣는다. 3. 새로운 리스트를 만들고 첫 번째 리스트와 두 번째 리스트의 원소 값들을 넣는다. 4. 해당 리스트를 오름차순으로 정렬하고 출력한다. 코드 import java.util.ArrayList; import java.util... 2023. 9. 1.
[JAVA] 격자판 최대합 접근하기 행과 열로 이루어진 데이터는 십중팔구 2차원 배열을 의미하기 때문에 2차원 배열 및 이중 for문을 이용해서 풀면 되겠다고 생각했다. TO-DO 1. 정수 N을 입력받아, N행 N열의 2차원 배열을 생성한다. 2. 2차원 배열 각각의 인덱스에 원소값을 입력한다. 3. 각 행, 각 열, 각 대각선( \ 방향 & / 방향) 의 합을 구해서 최댓값인지 비교한다. 그림 설명 먼저, 각 행의 합을 구하고자 할 때는 1행의 합 : [0][0] + [0][1] + [0][2] + [0][3] + [0][4] 2행의 합 :[1][0] + [1][1] + [1][2] + [1][3] + [1][4] 3행의 합 : ... 4행의 합 : ... 5행의 합 : ... 이렇게 되니까 이중 for문을 이용해서 코드를 구.. 2023. 8. 31.
[JAVA-1929] 소수 구하기 - 에라토스테네스의 체 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 링크를 클릭하면 해당 문제로 이동합니다. 1. 접근하기 알고리즘 문제를 접하다보면 종종 소수와 관련된 문제를 마주치게 되는데 소수 문제는 에라토스테네스의 체를 이용하면 빠르게 해결할 수 있다. (소수 : 약수로 1과 자기 자신 2개의 숫자만 가지는 수) 2. 에라토스테네스의 체 TO-DO 1) 문제에서 N 이하의 숫자 중 소수를 구한다고 했으므로 0부터 N까지의 인덱스가 포함된 배열을 생성해준다. 2) 반복문을 통해, 2번 인덱스부터 값을 조사하고 해당 인덱스의 값이 0이면 출력한다. 3) 해.. 2023. 8. 30.
[JAVA-120902] 문자열 계산하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 링크를 클릭하면 해당 문제로 이동합니다. 1. 접근하기 이 문제는 사실 입출력 예시만 잘 확인하면 너무나 쉽게 해결할 수 있는 문제이다. 문자열 my_string은 '피연산자1 연산자 피연산자2' 로 구성되어 있는데 이 문자열을 split(" ")를 이용하여 문자를 분리한 후, String 배열에 담아서 풀어나가면 된다. TO-DO 1. split 메소드를 이용해서 문자열을 피연산자1, 연산자, 피연산자2로 구분하기 2. for문을 이용해서 인덱스 번호가 1, 3, 5, ... 에 속하는 문자열이 +,- 인지.. 2023. 1. 30.