본문 바로가기

전체 글

(162)
섹션6. Sort - 6. 장난꾸러기 📌 문제 설명철수는 새 학기를 맞아 짝꿍보다 키가 크지만 앞 번호를 받기 위해 몰래 자리를 바꿨습니다.학생들을 키순으로 세우고 앞에서부터 반 번호를 1번부터 부여했을 때 자리 바꾼 두 명(철수와 짝꿍)의 번호를 출력하는 프로그램을 작성하세요.📝 입력 & 출력입력첫 줄에 자연수 N (5 ≤ N ≤ 100)두 번째 줄에 일렬로 서있는 N명의 키 정보(키 값은 120 이상 180 이하의 자연수)출력자리를 바꾼 학생들의 반 번호를 오름차순으로 출력(단, 철수가 짝꿍보다 큼이 문제 조건)🔸 예제 입력 & 출력예제 입력9 120 125 152 130 135 135 143 127 160 예제 출력3 8💡 해결 방법현재 입력된 순서가 자리 바꾼 상태이고, 정렬된 순서와 비교해서 서로 다른 위치 2개를 찾으면 ..
섹션6. Sort - 5. 중복 확인 📌 문제 설명현수네 반 학생들이 각자 좋아하는 숫자 하나씩을 적어냈습니다. 이 숫자들 중 중복된 숫자가 있는지 확인하는 프로그램을 작성하세요.📝 입력 & 출력입력첫 줄에 자연수 N (5 ≤ N ≤ 100,000)두 번째 줄에 N개의 자연수 (각각 1 이상 10,000,000 이하)출력중복이 있으면 "D" 출력모두 다르면 "U" 출력🔹 예제 입력 & 출력예제 입력 1820 25 52 30 39 33 43 33 예제 출력 1D💡 해결 방법방법 1: 정렬 후 인접 비교 (강사님 소개 방법)배열을 정렬한 후, 앞뒤 숫자가 같은지 비교중복이 있으면 "D" 반환, 아니면 "U" 반환시간 복잡도: O(N log N)방법 2: 해시맵 사용 (강사님 추천 방법)숫자를 하나씩 순회하며 HashMap에 저장이미 있는..
섹션6. Sort - 4. Least Recently Used 📌 문제 설명캐시 메모리는 CPU와 주기억장치 사이에서 자주 사용하는 데이터를 빠르게 접근하기 위한 장치입니다.하지만 용량이 작기 때문에 효율적으로 관리하는 알고리즘이 필요합니다.LRU (Least Recently Used) 알고리즘은 가장 오랫동안 사용되지 않은 데이터를 제거하는 방식입니다.N개의 작업 요청이 들어왔을 때, 캐시 크기가 S일 경우 마지막 작업 후 캐시 상태를 구하세요.결과는 가장 최근 사용된 작업부터 순서대로 출력해야 합니다.📝 입력 & 출력입력첫 줄: 캐시 크기 S (3 ≤ S ≤ 10), 작업 개수 N (5 ≤ N ≤ 1000)두 번째 줄: N개의 작업 번호 (1 ~ 100 사이 자연수)출력마지막 작업 이후의 캐시 상태를 가장 최근 사용된 작업부터 출력🔹 예제 입력 & 출력예제..
섹션6. Sort - 3. 삽입 정렬 📌 문제 설명N개의 숫자가 입력되면 삽입 정렬 알고리즘을 이용하여 오름차순으로 정렬한 결과를 출력하는 프로그램을 작성하세요.📝 입력 & 출력입력첫 번째 줄: 자연수 N (1 ≤ N ≤ 100)두 번째 줄: N개의 정수 (정수형 범위)출력오름차순으로 정렬된 수열 출력🔸 예제 입력 & 출력예제 입력 16 11 7 5 6 10 9 예제 출력 15 6 7 9 10 11 💡 해결 방법삽입 정렬은 두 번째 원소부터 시작해서앞쪽의 정렬된 부분에 현재 원소를 삽입하는 방식으로 정렬합니다.현재 값보다 큰 값들은 한 칸씩 뒤로 밀어주고, 적절한 위치에 삽입합니다.💻 코드 구현 (Java)package partSort;import java.util.Scanner;public class Problem3 { publ..
섹션6. Sort - 2. 버블 정렬 📌 문제 설명N개의 숫자가 입력되면 버블 정렬(Bubble Sort) 알고리즘을 이용해 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요.📝 입력 & 출력입력첫 번째 줄에 자연수 N(1 ≤ N ≤ 100)이 주어집니다.두 번째 줄에 N개의 자연수가 공백을 기준으로 입력됩니다.출력버블 정렬 알고리즘을 이용해 오름차순으로 정렬된 수열을 출력합니다.🔹 예제 입력 & 출력예제 입력 1613 5 11 7 23 15  예제 출력 1 5 7 11 13 15 23💡 해결 방법버블 정렬은 인접한 두 수를 비교하여 큰 수를 오른쪽으로 이동시키는 방식입니다.한 바퀴 돌 때마다 가장 큰 수가 맨 끝으로 가기 때문에 "거품처럼 올라간다"는 이름이 붙었습니다.총 N-1번 반복하며, 각 회차마다 비교 범위는 점점 줄어듭니..
섹션6. Sort - 1. 선택 정렬 📌 문제 설명N개의 숫자가 입력되면 선택 정렬(Selection Sort) 알고리즘을 이용해 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요.📝 입력 & 출력입력첫 번째 줄에 자연수 N(1 ≤ N ≤ 100)이 주어집니다.두 번째 줄에 N개의 자연수가 공백을 기준으로 입력됩니다.출력선택 정렬 알고리즘을 이용해 오름차순으로 정렬된 수열을 한 줄로 출력합니다.🔹 예제 입력 & 출력예제 입력 1 613 5 11 7 23 15 예제 출력 1 5 7 11 13 15 23💡 해결 방법선택 정렬은 배열을 순회하면서, 가장 작은 값을 찾아 앞으로 보내는 방식입니다.각 회차마다 현재 위치 이후의 값들 중 가장 작은 값을 선택하여 현재 위치와 교환합니다.시간 복잡도는 O(N²)이지만, 구현이 간단하고 정렬의 개..
섹션 5. Stack, Queue - 8. 응급실 📌 문제 설명응급실에는 환자가 도착한 순서대로 진료를 받지만 위험도가 더 높은 환자가 우선됩니다.다음 규칙에 따라 진료 순서를 결정합니다:환자를 접수 순서대로 큐에 저장가장 앞에 있는 환자보다 더 높은 위험도의 환자가 있다면 해당 환자를 큐 뒤로 보냄그렇지 않다면 진료M번째 환자가 몇 번째로 진료받는지 출력하세요.📝 입력 & 출력입력첫 줄: N(환자 수), M(목표 환자 위치)둘째 줄: N명의 환자의 위험도 (접수 순서대로)출력M번째 환자의 진료 순서 출력🔹 예제 입력 & 출력예제 입력 15 260 50 70 80 90 예제 출력 1 3 예제 입력 2 6 370 60 90 60 60 60 예제 출력 2 4💡 해결 방법환자를 객체로 만들어서 id(접수 순서)와 priority(위험도)를 함께 저장큐..
섹션 5. Stack, Queue - 7. 교육과정 설계 📌 문제 설명1년 과정의 수업 계획을 세우는 현수는 필수 과목의 순서를 반드시 지켜야 합니다. 필수 과목은 특정 순서로 반드시 이수되어야 하며, 수업 계획표에 포함된 모든 과목은 무조건 이수한다고 가정합니다.예를 들어, 필수 과목이 "CBA"이고 수업 계획이 "CBDAGE"라면, C → B → A의 순서가 유지되므로 올바른 설계입니다. 반면, "CGEADB"처럼 순서가 어긋나면 잘못된 설계입니다.📝 입력 & 출력입력첫 줄: 필수 과목의 순서 (ex. CBA)두 번째 줄: 현수가 세운 수업 계획 (ex. CBDAGE)출력계획이 올바르면 "YES", 그렇지 않으면 "NO"🔹 예제 입력 & 출력예제 입력 1CBACBDAGE 예제 출력 1YES💡 해결 방법필수 과목을 Queue로 저장하여 순서를 관리합니..