본문 바로가기

자바 자료구조 & 알고리즘

(16)
프로그래머스 이분 탐색 문제 : 입국심사 문제 설명 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있습니다. 모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고 싶습니다. 입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개변수로 주어질 때, 모든 사람이 심사를 받는데 걸리는 시간의 최솟값을 return 하도록 solution 함수를 작성해주세요. 제한사항 입국심사..
Do it! 자료구조와 함께 배우는 알고리즘 입문 : 3장 검색 검색 알고리즘 검색과 키 어떤 검색을 하게 되더라도 특정 항목에 주목한다는 점은 검색하기의 공통점이다. 그 주목하는 항목을 키라고 한다. 키는 전체 데이터의 일부로, 검색 대상을 찾아내기 위해 주목하는 데이터를 말한다. 예를 들어, 여러 사람들 중 국적인 한국인 사람을 검색한다고 할 때, 국적이 키이고, 키 값은 한국이다. 또한 찾고자하는 키값과 일치하는 사람이 조건이며, 이런 조건은 꼭 하나만 있는 것은 아니고, 논리 곱이나 논리 합을 사용하여 복합 지정하기도 한다. 배열에서 검색하기 배열을 검색하는 예시로 다음 세가지 검색 기법을 제시한다. 이 중 몇몇은 자료구조에 의존한다. 우리는 이 장에서 배열 검색을 학습하며 다음의 알고리즘을 활용한다. 선형 검색 : 무작위로 늘어놓은 데이터 모임에서 검색 수행..
백준 별찍기 시리즈 - 2444, 2445, 2446번 별 찍기 - 7 성공분류 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 5 출력 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. * *** ***** ******* ********* ******* ***** *** * 내 코드 import java.util.Scanner; public class No2444 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = 1; i = 1; i--) { for (int j = 0; j < n - i; j++) System.out.print("..
자바로 배우는 핵심 자료구조와 알고리즘 : 3장 ArrayList 클래스 3.1. MyArrayList 메서드 분류하기 상수시간 get 메서드 @Override public T get(int index) { if (index = size) { throw new IndexOutOfBoundsException(); } return array[index]; } get 메서드에 있는 모든 것은 상수 시간이다. set 메서드 @Override public T set(int index, T element) { // get(index); // T old = array[index]; // 내가 했던 것... T old = get(index); array[index] = element; return old; } 명시적으로 인덱스의 유효성 검증을 하지 않고 get 메서..
백준 별찍기 시리즈 - 2440, 2441, 2442, 2443번 두잇 책 1장에 나온 것들이라서 다시 정리해보는 마음으로 풀어봤다. 별찍기 - 3 문제 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 5 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. ***** **** *** ** * 내 코드 import java.util.Scanner; public class No2440 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for (int i = num; i >= 1; i--) { for (int j = 0; j < i; ..
백준 4948번 : 베르트랑 공준 베르트랑 공준류 문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하며, 한 줄로 이루어져 있다. (n ≤ 123456) 입력의 마지막에는 0이 주어진다. 1 10 1..
Do it! 자료구조와 함께 배우는 알고리즘 입문 : 1장 기본 알고리즘 알고리즘이란? 세 값의 최댓값 실습 1-1 package com.heejin.doit.ex01; import java.util.Scanner; public class Max3 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("세 정수의 최댓값 구합니다."); System.out.print("a의 값 : "); int a = stdIn.nextInt(); System.out.print("b의 값 : "); int b = stdIn.nextInt(); System.out.print("c의 값 : "); int c = stdIn.nextInt(); int max = a; if ..
백준 2581번 - 소수 소수 문제 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다. 입력 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다. 60 100 출력 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. 620 61 내 코드 pa..