본문 바로가기

swea74

[SW Expert Academy] 4843. 특별한 정렬 4843. 특별한 정렬 문제) 보통의 정렬은 오름차순이나 내림차순으로 이루어지지만, 이번에는 특별한 정렬을 하려고 한다. N개의 정수가 주어지면 가장 큰 수, 가장 작은 수, 2번째 큰 수, 2번째 작은 수 식으로 큰 수와 작은 수를 번갈아 정렬하는 방법이다. 예를 들어 1부터 10까지 10개의 숫자가 주어지면 다음과 같이 정렬한다. 10 1 9 2 8 3 7 4 6 5 주어진 숫자에 대해 특별한 정렬을 한 결과를 10개까지 출력하시오 [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다. 1 2022. 2. 16.
[SW Expert Academy] 4839. 이진탐색 4839. 이진탐색 문제) 코딩반 학생들에게 이진 탐색을 설명하던 선생님은 이진탐색을 연습할 수 있는 게임을 시켜 보기로 했다. 짝을 이룬 A, B 두 사람에게 교과서에서 각자 찾을 쪽 번호를 알려주면, 이진 탐색만으로 지정된 페이지를 먼저 펼치는 사람이 이기는 게임이다. 예를 들어 책이 총 400쪽이면, 검색 구간의 왼쪽 l=1, 오른쪽 r=400이 되고, 중간 페이지 c= int((l+r)/2)로 계산한다. 찾는 쪽 번호가 c와 같아지면 탐색을 끝낸다. A는 300, B는 50 쪽을 찾아야 하는 경우, 다음처럼 중간 페이지를 기준으로 왼쪽 또는 오른 쪽 영역의 중간 페이지를 다시 찾아가면 된다. A B 첫 번째 탐색 l=1, r=400, c=200 l=1, r=400, c=200 두 번째 탐색 l=2.. 2022. 2. 16.
[SW Expert Academy] 4837. 부분집합의 합 4837. 부분집합의 합 문제) 1부터 12까지의 숫자를 원소로 가진 집합 A가 있다. 집합 A의 부분 집합 중 N개의 원소를 갖고 있고, 원소의 합이 K인 부분집합의 개수를 출력하는 프로그램을 작성하시오. 해당하는 부분집합이 없는 경우 0을 출력한다. 모든 부분 집합을 만들어 답을 찾아도 된다. 예를 들어 N = 3, K = 6 경우, 부분집합은 { 1, 2, 3 } 경우 1가지가 존재한다. [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 ) 테스트 케이스 별로 부분집합 원소의 수 N과 부분 집합의 합 K가 여백을 두고 주어진다. ( 1 ≤ N ≤ 12, 1 ≤ K ≤ 100 ) [출력] 각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다. 풀이) .. 2022. 2. 16.
[SW Expert Academy] 4836. 색칠하기 4836. 색칠하기 문제) 그림과 같이 인덱스가 있는 10x10 격자에 빨간색과 파란색을 칠하려고 한다. N개의 영역에 대해 왼쪽 위와 오른쪽 아래 모서리 인덱스, 칠할 색상이 주어질 때, 칠이 끝난 후 색이 겹쳐 보라색이 된 칸 수를 구하는 프로그램을 만드시오. 주어진 정보에서 같은 색인 영역은 겹치지 않는다. 예를 들어 2개의 색칠 영역을 갖는 위 그림에 대한 색칠 정보이다. 2 2 2 4 4 1 ( [2,2] 부터 [4,4] 까지 color 1 (빨강) 으로 칠한다 ) 3 3 6 6 2 ( [3,3] 부터 [6,6] 까지 color 2 (파랑) 으로 칠한다 ) [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 ) 다음 줄부터 테스트케이스의 첫 줄에 칠할 영역의 개수 N이 .. 2022. 2. 16.