본문 바로가기

알고리즘/백준(JAVA)9

[JAVA-1654] 랜선 자르기(결정 알고리즘) 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 링크를 클릭하면 해당 문제로 이동합니다. 해당 문제에 대한 시각은 내가 결정 알고리즘이라는 것을 알기 전과 후로 나뉜다. 내 기준에서는 나름 어려웠던 문제인데 구글링하지 않고 혼자 풀어낸 것에 대한 성취감이 느껴져서 어떻게 풀었는지 잊지 않기 위해 기록해본다. 결정 알고리즘이란? 결정 알고리즘이라는 단어는 실제 공식적으로 사용 되어지는 단어는 아니고, 내가 개인적으로 인프런에서 수강중인 강의의 강사님께서 만든 단어인거 같다. 어쨌든,.. 2023. 10. 27.
[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-3052] 나머지 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 링크를 클릭하면 해당 문제로 이동합니다. 1. 접근하기 정수 10개를 입력 받고 42로 나눈 나머지들을 새로운 배열에 담은 뒤, 중복된 값을 제거하고 후에 배열의 길이를 구해주면 답이 되겠다고 생각했다. TO-DO 1) 정수 10개를 담을 배열을 준비한다. 2) 배열의 원소들을 42로 나눈 나머지 값들을 새로운 배열에 담는다. 3) 단, 나머지 값이 같은 원소들은 넣지 않는다. 2. 코드 import java.util.ArrayList; import java.util.List; import java.util.Scanner; publ.. 2023. 1. 15.
[JAVA-2753] 윤년 https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 www.acmicpc.net 풀기전에 앞서 문제를 몇 번씩 읽어보면서 내 나름대로의 해석을 해보았다. 그러니까 내 해석에 따르자면, 윤년: 연도가 4의 배수이면서 100의 배수가 아닐때(두가지 조건 다 만족해야됨) / 400의 배수일때 * 숫자 x로 나눴을때 나머지가 0인 것을 x의 배수라고 한다. ex)2012는 4로 나눴을 때 나머지가 0이지만 100으로 나누면 나머지가 존재한다. → 2012년은 윤년 ex2)2.. 2021. 12. 7.
[JAVA-9498] 시험 성적 https://www.acmicpc.net/problem/9498 9498번: 시험 성적 시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오. www.acmicpc.net *기초적인 방법* import java.util.Scanner; public class Main { public static void main(String[] args) { //시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, //60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오. Scanner sc = new Scanner(System.in); int sc.. 2021. 12. 7.