본문 바로가기

Algorithm Problem Solving

(11)
Programming Advanced [파이썬 S/W 문제해결 구현04 분할 정복] SWEA 5205 - 퀵 정렬 (D3) Problem 퀵 정렬을 구현해 N개의 정수를 정렬해 리스트 A에 넣고, A[N//2]에 저장된 값을 출력하는 프로그램을 만드시오. [입력] 첫 줄에 테스트케이스의 수 T가 주어진다. 1
Programming Advanced [파이썬 S/W 문제해결 구현04 분할 정복] SWEA 5204 - 병합 정렬 (D3) Problem 알고리즘 교수님은 학생들에게 병합 정렬을 이용해 오름차순으로 정렬하는 과제를 내려고 한다. 정렬 된 결과만으로는 실제로 병합 정렬을 적용했는지 알 수 없기 때문에 다음과 같은 제약을 주었다. N개의 정렬 대상을 가진 리스트 L을 분할할 때 L[0:N//2], L[N//2:N]으로 분할 한다. 병합 과정에서 다음처럼 왼쪽 마지막 원소가 오른쪽 마지막 원소보다 큰 경우의 수를 출력한다. 정렬이 끝난 리스트 L에서 L[N//2] 원소를 출력한다. 알고리즘 교수님의 조건에 따라 병합 정렬을 수행하는 프로그램을 만드시오. [입력] 첫 줄에 테스트케이스의 수 T가 주어진다. 1
Programming Advanced [파이썬 S/W 문제해결 구현03 탐욕 알고리즘] SWEA 5202 - 화물 도크 (D3) Problem 24시간 운영되는 물류센터에는 화물을 싣고 내리는 도크가 설치되어 있다. 0시부터 다음날 0시 이전까지 A도크의 사용신청을 확인해 최대한 많은 화물차가 화물을 싣고 내릴 수 있도록 하면, 최대 몇 대의 화물차가 이용할 수 있는지 알아내 출력하는 프로그램을 만드시오. 신청서에는 작업 시작 시간과 완료 시간이 매시 정각을 기준으로 표시되어 있고, 앞 작업의 종료와 동시에 다음 작업을 시작할 수 있다. 예를 들어 앞 작업의 종료 시간이 5시면 다음 작업의 시작 시간은 5시부터 가능하다. [입력] 첫 줄에 테스트케이스의 수 T가 주어진다. 1
Programming Advanced [파이썬 S/W 문제해결 구현03 탐욕 알고리즘] SWEA 5201 - 컨테이너 운반 (D3) Problem 화물이 실려 있는 N개의 컨테이너를 M대의 트럭으로 A도시에서 B도시로 운반하려고 한다. 트럭당 한 개의 컨테이너를 운반 할 수 있고, 트럭의 적재용량을 초과하는 컨테이너는 운반할 수 없다. 컨테이너마다 실린 화물의 무게와 트럭마다의 적재용량이 주어지고, A도시에서 B도시로 최대 M대의 트럭이 편도로 한번 만 운행한다고 한다. 이때 이동한 화물의 총 중량이 최대가 되도록 컨테이너를 옮겼다면, 옮겨진 화물의 전체 무게가 얼마인지 출력하는 프로그램을 만드시오. 화물을 싣지 못한 트럭이 있을 수도 있고, 남는 화물이 있을 수도 있다. 컨테이너를 한 개도 옮길 수 없는 경우 0을 출력한다. [입력] 첫 줄에 테스트케이스의 수 T가 주어진다. 1
Programming Advanced [S/W 문제해결 응용 구현01 시작하기] SWEA 1242 - 암호코드 스캔 (D5) Problem swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15JEKKAM8CFAYD&categoryId=AV15JEKKAM8CFAYD&categoryType=CODE&problemTitle=1242&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com Solving 아이디어 중복되는 가로줄은 삭제한다. (set으로 바꾸면 자동으로 같은 원소는 제외됨) 가로줄 하나에는 암호 코드가 한 세트 이상..
Programming Advanced [파이썬 S/W 문제해결 구현02 완전 검색] SWEA 5189 - 전자카트 (D3) Problem 골프장 관리를 위해 전기 카트로 사무실에서 출발해 각 관리구역을 돌고 다시 사무실로 돌아와야 한다. 사무실에서 출발해 각 구역을 한 번씩만 방문하고 사무실로 돌아올 때의 최소 배터리 사용량을 구하시오. 각 구역을 이동할 때의 배터리 사용량은 표로 제공되며, 1번은 사무실을, 2번부터 N번은 관리구역 번호이다. 두 구역 사이도 갈 때와 올 때의 경사나 통행로가 다를 수 있으므로 배터리 소비량은 다를 수 있다. N이 3인 경우 가능한 경로는 1-2-3-1, 1-3-2-1이며 각각의 배터리 소비량은 다음과 같이 계산할 수 있다. e[1][2]+e[2][3]+e[3][1] = 18+55+18 = 91 e[1][3]+e[3][2]+e[2][1] = 34+7+48 = 89 e 1 2 3 도착 1 0 ..
Programming Advanced [파이썬 S/W 문제해결 구현02 완전 검색] SWEA 5188 - 최소합 (D3) Problem 그림처럼 NxN 칸에 숫자가 적힌 판이 주어지고, 각 칸에서는 오른쪽이나 아래로만 이동할 수 있다. 맨 왼쪽 위에서 오른쪽 아래까지 이동할 때, 지나는 칸에 써진 숫자의 합계가 최소가 되도록 움직였다면 이때의 합계가 얼마인지 출력하는 프로그램을 만드시오. 1 2 3 2 3 4 3 4 5 그림의 경우 1, 2, 3, 4, 5순으로 움직이고 최소합계는 15가 된다. 가능한 모든 경로에 대해 합을 계산한 다음 최소값을 찾아도 된다. [입력] 첫 줄에 테스트케이스의 수 T가 주어진다. 1
Programming Advanced [파이썬 S/W 문제해결 구현01 시작하기] SWEA 5186 - 이진수2 (D2) Problem 0보다 크고 1미만인 십진수 N을 이진수로 바꾸려고 한다. 예를 들어 0.625를 이진 수로 바꾸면 0.101이 된다. N = 0.625 0.101 (이진수) = 1*2-1 + 0*2-2 + 1*2-3 = 0.5 + 0 + 0.125 = 0.625 N을 소수점 아래 12자리 이내인 이진수로 표시할 수 있으면 0.을 제외한 나머지 숫자를 출력하고, 13자리 이상이 필요한 경우에는 ‘overflow’를 출력하는 프로그램을 작성하시오. [입력] 첫 줄에 테스트케이스의 수 T가 주어진다. 1 이진수 변환에 13자리 이상이 필요한 것 -> overflow else: result = 'overflow' print('#{} {}'.format(tc, result))