본문 바로가기

Algorithm

(15)
섹션 6. Sorting and Searching(정렬, 이분검색과 결정알고리즘) 7. 좌표 정렬 문제 N개의 평면상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하세요. 정렬기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다. 입력 첫째 줄에 좌표의 개수인 N(3
섹션 6. Sorting and Searching(정렬, 이분검색과 결정알고리즘) 6. 장난꾸러기 문제 새 학기가 시작되었습니다. 철수는 새 짝꿍을 만나 너무 신이 났습니다. 철수네 반에는 N명의 학생들이 있습니다. 선생님은 반 학생들에게 반 번호를 정해 주기 위해 운동장에 반 학생들을 키가 가장 작은 학생부터 일렬로 키순으로 세웠습니다. 제일 앞에 가장 작은 학생부터 반 번호를 1번부터 N번까지 부여합니다. 철수는 짝꿍보다 키가 큽니다. 그런데 철수가 앞 번호를 받고 싶어 짝꿍과 자리를 바꿨습니다. 선생님은 이 사실을 모르고 학생들에게 서있는 순서대로 번호를 부여했습니다. 철수와 짝꿍이 자리를 바꾼 반 학생들의 일렬로 서있는 키 정보가 주어질 때 철수가 받은 번호와 철수 짝꿍이 받은 번호를 차례로 출력하는 프로그램을 작성하세요. 입력 첫 번째 줄에 자연수 N(5
섹션 6. Sorting and Searching(정렬, 이분검색과 결정알고리즘) 5. 중복 확인 문제 캐시메모리는 CPU와 주기억장치(DRAM) 사이의 고속의 임시 메모리로서 CPU가 처리할 작업을 저장해 놓았다가 필요할 바로 사용해서 처리속도를 높이는 장치이다. 워낙 비싸고 용량이 작아 효율적으로 사용해야 한다. 철수의 컴퓨터는 캐시메모리 사용 규칙이 LRU 알고리즘을 따른다. LRU 알고리즘은 Least Recently Used 의 약자로 직역하자면 가장 최근에 사용되지 않은 것 정도의 의미를 가지고 있습니다. 캐시에서 작업을 제거할 때 가장 오랫동안 사용하지 않은 것을 제거하겠다는 알고리즘입니다. 입력 첫 번째 줄에 캐시의 크기인 S(3
섹션 6. Sorting and Searching(정렬, 이분검색과 결정알고리즘) 4. Least Recently Used 문제 캐시메모리는 CPU와 주기억장치(DRAM) 사이의 고속의 임시 메모리로서 CPU가 처리할 작업을 저장해 놓았다가 필요할 바로 사용해서 처리속도를 높이는 장치이다. 워낙 비싸고 용량이 작아 효율적으로 사용해야 한다. 철수의 컴퓨터는 캐시메모리 사용 규칙이 LRU 알고리즘을 따른다. LRU 알고리즘은 Least Recently Used 의 약자로 직역하자면 가장 최근에 사용되지 않은 것 정도의 의미를 가지고 있습니다. 캐시에서 작업을 제거할 때 가장 오랫동안 사용하지 않은 것을 제거하겠다는 알고리즘입니다. 캐시의 크기가 주어지고, 캐시가 비어있는 상태에서 N개의 작업을 CPU가 차례로 처리한다면 N개의 작업을 처리한 후 캐시메모리의 상태를 가장 최근 사용된 작업부터 차례대로 출력하는 프로그램을 작성하세..
섹션 6. Sorting and Searching(정렬, 이분검색과 결정알고리즘) 3. 삽입정렬 문제 N개의 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요. 정렬하는 방법은 삽입정렬입니다. 입력 첫 번째 줄에 자연수 N(1
섹션 1. String(문자열)_3. 문장 속 단어 문제 한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요. 문장속의 각 단어는 공백으로 구분됩니다. 입력 첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성되어 있습니다. 출력 첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한 단어를 답으로 합니다. 입출력 예제 나름 TDD를 해보기 위해 작은 단위로 쪼개면서 sysout으로 확인하며 풀어보았다. 다음과 같이 두 가지 방식으로 풀어보았다. 1. split와 향상된 for 문을 사용한다. 2. indexOf와 substring을 사용한다. 1. split / 향상된 for문 먼저 첫번째 풀이방식이다. Scanner를 사용하여 ..
섹션 1. String(문자열)_2. 대소문자 변환 문제 대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요. 입력 첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다. 문자열은 영어 알파벳으로만 구성되어 있습니다. 출력 첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다. 입출력 예제 풀이 과정은 이전 문제와 동일하게 변수와 메소드 선언 > 메소드 구현 > 출력이다. 입력받을 문자열과 실제 작업이 이루어질 메소드를 선언한다. Scanner를 사용하여 입력받는다. 그 후에 생성한 메소드를 실행할 수 있도록 main에 객체를 생성한다. (이 때, 생성한 메소드가 static 이 붙어있다면 객체 생성을 해주지 않아도 된다.) 이제 메소드를 구현해보자..