본문 바로가기
728x90

알고리즘4

[백준 5532번] 방학 숙제 (브론즈 VI) - Java/자바 문제 링크 알고리즘 분류: 수학, 사칙연산 정답비율 63% (2023.06.27 기준) 문제 상근이는 초등학교에 다닐 때, 방학 숙제를 남들보다 먼저 미리 하고 남은 기간을 놀았다. 방학 숙제는 수학과 국어 문제 풀기이다. 방학은 총 L일이다. 수학은 총 B페이지, 국어는 총 A페이지를 풀어야 한다. 상근이는 하루에 국어를 최대 C페이지, 수학을 최대 D페이지 풀 수 있다. 상근이가 겨울 방학동안 숙제를 하지 않고 놀 수 있는 최대 날의 수를 구하는 프로그램을 작성하시오. 입력 한 줄에 하나씩 총 다섯 줄에 걸쳐 L, A, B, C, D가 주어진다. (2 ≤ L ≤ 40, 1 ≤ A, B ≤ 1000, 1 ≤ C, D ≤ 100) 항상 방학 숙제를 방학 기간내에 다 할 수 있는 경우만 입력으로 주어진다... 2023. 6. 27.
[백준 10101번] 삼각형 외우기 (브론즈 IV) - Java/자바 문제 링크 알고리즘 분류: 구현, 기하학 정답비율 56% (2023.06.23 기준) 문제 창영이는 삼각형의 종류를 잘 구분하지 못한다. 따라서 프로그램을 이용해 이를 외우려고 한다. 삼각형의 세 각을 입력받은 다음, 세 각의 크기가 모두 60이면, Equilateral 세 각의 합이 180이고, 두 각이 같은 경우에는 Isosceles 세 각의 합이 180이고, 같은 각이 없는 경우에는 Scalene 세 각의 합이 180이 아닌 경우에는 Error 를 출력하는 프로그램을 작성하시오. 입력 총 3개의 줄에 걸쳐 삼각형의 각의 크기가 주어진다. 모든 정수는 0보다 크고, 180보다 작다. 출력 문제의 설명에 따라 Equilateral, Isosceles, Scalene, Error 중 하나를 출력한다. 예.. 2023. 6. 23.
[정렬 알고리즘] 버블 정렬 (Bubble Sort) 설명/예제코드 버블 정렬은 거품 정렬이라고도 부른다. 인접한 두 수를 비교해서 큰 수를 뒤에, 작은 수를 앞에 오게 하는 방식으로 정렬한다. 오름차순 버블 정렬을 하기 위해서는 배열의 첫번째 원소부터, arr[0]과 arr[1]을 비교해서, 1) arr[0] arr[1]이라면 두 수의 순서를 바꾼다. 같은 방식으로 arr[1]과 arr[2], arr[2]와 arr[3], ... arr[n-1]과 arr[n]까지 수행한다. 이 방식을 두 수의 순서가 바뀌는 경우가 없을 때까지 반복하면, 배열의 오름차순 정렬이 완료된다. 내림차순 정렬의 경우, 동일 방식으로 진행하되 1) arr[0] >= arr[1]이라면 그대로 두고, 2) arr[0] < arr[1]이라면 순서를 바꾸면 된다. 위의 이미지를 예로 들면, 초기 배열은 .. 2023. 6. 17.
[탐색 알고리즘] 이진 탐색 (Binary Search) 탐색 알고리즘의 기초 중 하나인 이진 탐색. 위에 첨부한 gif가 이진 탐색의 모든 것을 설명해 준다. 이진 탐색은 오름차순으로 정렬된 정수의 리스트를 절반으로 나눈 후, 둘 중 필요한 부분만 취하는 과정을 반복해서 원하는 원소를 얻는 탐색 방법이다. 위 사진을 예로 들면, 5를 찾을 때, 우선 리스트를 중간값인 mid를 기준으로 해서 절반으로 나눈다. 여기서 mid는 4이다. 이 4가 5보다 작은지 큰지를 판단한다. 4 < 5기 때문에 오른쪽 절반 리스트만 취하고, 왼쪽 절반 리스트는 버린다. mid가 5보다 작으므로 strat를 mid+1 값으로 변경한다. 만약 5보다 크면 end를 mid-1값으로 변경했을 것이다. 이 과정을 반복하다 보면, 결국엔 mid = target인 때가 온다. 이렇게 되면 .. 2023. 6. 3.