<jupyter_start><jupyter_text>출처https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVF-WqqecDFAWg 학습개요- SW 문제해결 역량강화를 목표로 자료구조의 지식 습득 및 실제 구현 능력을 배양하는 과정입니다.학습목표1. 2차원 리스트를 선언하고 활용할 수 있다.2. 2차원 리스트의 순회 방법을 이해하고 활용할 수 있다.3. 부분집합을 구하는 알고리즘을 이해하고 활용할 수 있다.4. 검색의 개념을 설명할 수 있다.5. 순차 검색에 대해 이해하고 활용할 수 있다.6. 이진 검색에 대해 이해하고 활용할 수 있다.7. 인덱스 개념을 이해하고 활용할 수 있다.8. 셀렉션 알고리즘에 대하여 설명할 수 있다.9. 선택 정렬을 이해하고 활용할 수 있다.  4836. [파이썬 S/W 문제해결 기본] 2일차 - 색칠하기SW Expert Academy모의 테스트user photo kyungpyo-kim제출결과제출횟수 1 / 99제출결과 정보제출회차	제출시간	결과1차	08:48:32	Pass4836. [파이썬 S/W 문제해결 기본] 2일차 - 색칠하기문제 내용시간 : 10개 테스트케이스를 합쳐서 Python의 경우 2초메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.그림과 같이 인덱스가 있는 10x10 격자에 빨간색과 파란색을 칠하려고 한다.N개의 영역에 대해 왼쪽 위와 오른쪽 아래 모서리 인덱스, 칠할 색상이 주어질 때, 칠이 끝난 후 색이 겹쳐 보라색이 된 칸 수를 구하는 프로그램을 만드시오.주어진 정보에서 같은 색인 영역은 겹치지 않는다. (그림 없음)예를 들어 2개의 색칠 영역을 갖는 위 그림에 대한 색칠 정보이다.22 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이 주어진다. ( 2 ≤ N ≤ 30 )다음 줄에 왼쪽 위 모서리 인덱스 r1, c1, 오른쪽 아래 모서리 r2, c2와 색상 정보 color가 주어진다. ( 0 ≤ r1, c1, r2, c2 ≤ 9 )color = 1 (빨강), color = 2 (파랑) [출력] 각 줄마다 "T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다. ```입력:322 2 4 4 13 3 6 6 231 2 3 3 13 6 6 8 12 3 5 6 231 4 8 5 11 8 3 9 13 2 5 8 2	 출력:1 42 53 7```<jupyter_code># Make input file
f = open("input.txt", "w")
f.write("3\n")
f.write("2\n")
f.write("2 2 4 4 1\n")
f.write("3 3 6 6 2\n")
f.write("3\n")
f.write("1 2 3 3 1\n")
f.write("3 6 6 8 1\n")
f.write("2 3 5 6 2\n")
f.write("3\n")
f.write("1 4 8 5 1\n")
f.write("1 8 3 9 1\n")
f.write("3 2 5 8 2\n")
f.close()
# for Jupyter Notebook
###
f = open("input.txt", "r")
input = f.readline
###

T = int(input())
for test_case in range(1, T + 1):
        
    n = int(input())
    nl = []
    for _ in range(n):
        nl.append( list(map(int, input().split(' ')) ) )
        
    red = [[False for _ in range(10)] for _ in range(10)]
    blue = [[False for _ in range(10)] for _ in range(10)]
    
    for i in range(n):
        if nl[i][-1] == 1: # red
            for j in range(nl[i][0], nl[i][2]+1):
                for k in range(nl[i][1], nl[i][3]+1):
                    red[j][k] = True
        else: # blue
            for j in range(nl[i][0], nl[i][2]+1):
                for k in range(nl[i][1], nl[i][3]+1):
                    blue[j][k] = True
    cnt = 0
    for i in range(10):
        for j in range(10):
            if red[i][j] and blue[i][j]:
                cnt += 1
    print("#"+str(test_case), cnt)<jupyter_output>#1 4
#2 5
#3 7<jupyter_text>4837. [파이썬 S/W 문제해결 기본] 2일차 - 부분집합의 합※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.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는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.```입력:33 65 155 10	 출력:1 12 13 0```<jupyter_code># Make input file
f = open("input.txt", "w")
f.write("3\n")
f.write("3 6\n")
f.write("5 15\n")
f.write("5 10\n")
f.close()
# for Jupyter Notebook
###
f = open("input.txt", "r")
input = f.readline
###

T = int(input()) 
    
for test_case in range(1, T + 1):
    
    n, k = map(int, input().split(' '))
    a = list(range(1,13))
    
    cnt = 0
    
    case = []
    for i in range(1<<12):
        c = []
        for j in range(12):
            if i & 1<<j:
                c.append(1)
            else:
                c.append(0)
        case.append(c)
        
    for c in case:
        if sum(c) == n: # test N
            s = 0
            for i in range(12):
                if c[i] == 1:
                    s += i + 1
            if s == k: # test K
                cnt += 1
                
    print("#"+str(test_case), cnt)<jupyter_output>#1 1
#2 1
#3 0<jupyter_text>4839. [파이썬 S/W 문제해결 기본] 2일차 - 이진탐색※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.코딩반 학생들에게 이진 탐색을 설명하던 선생님은 이진탐색을 연습할 수 있는 게임을 시켜 보기로 했다.짝을 이룬 A, B 두 사람에게 교과서에서 각자 찾을 쪽 번호를 알려주면, 이진 탐색만으로 지정된 페이지를 먼저 펼치는 사람이 이기는 게임이다.예를 들어 책이 총 400쪽이면, 검색 구간의 왼쪽 l=1, 오른쪽 r=400이 되고, 중간 페이지 c= int((l+r)/2)로 계산한다.찾는 쪽 번호가 c와 같아지면 탐색을 끝낸다.A는 300, B는 50 쪽을 찾아야 하는 경우, 다음처럼 중간 페이지를 기준으로 왼쪽 또는 오른 쪽 영역의 중간 페이지를 다시 찾아가면 된다. ```첫 번째 탐색A: l=1, r=400, c=200B: l=1, r=400, c=200두 번째 탐색A: l=200, r=400, c=300B: l=1, r=200, c=100세 번째 탐색 B: l=1, r=100, c=50```책의 전체 쪽수와 두 사람이 찾을 쪽 번호가 주어졌을 때, 이진 탐색 게임에서 이긴 사람이 누구인지 알아내 출력하시오. 비긴 경우는 0을 출력한다.  [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다.  1<=T<=50 테스트 케이스 별로 책의 전체 쪽 수 P, A, B가 찾을 쪽 번호 Pa, Pb가 차례로 주어진다. 1<= P, Pa, Pb <=1000 [출력] 각 줄마다 "T" (T는 테스트 케이스 번호)를 출력한 뒤, A, B, 0 중 하나를 출력한다.```입력:3400 300 3501000 299 5781000 222 888	 출력:1 A2 03 A```<jupyter_code># Make input file
f = open("input.txt", "w")
f.write("3\n")
f.write("400 300 350\n")
f.write("1000 299 578\n")
f.write("1000 222 888\n")
f.close()

# for Jupyter Notebook
###
f = open("input.txt", "r")
input = f.readline
###

T = int(input())

for test_case in range(1, T + 1):
    
    book, a, b = map(int, input().split(' '))
    
    def binSearch(book, t):
        search = False
        cnt = 0
        cur_page = book
        l=1
        r=book
        while not search:
            cnt += 1
            c= int((l+r)/2)
            if t == c:
                break
            
            if c > t:
                r = c
            else:
                l = c
        return cnt
    
    numa = binSearch(book, a)
    numb = binSearch(book, b)
    
    if numa < numb:
        print("#"+str(test_case), "A")
    if numa > numb:
        print("#"+str(test_case), "B")
    if numa == numb:
        print("#"+str(test_case), "0")<jupyter_output>#1 A
#2 0
#3 A<jupyter_text>4843. [파이썬 S/W 문제해결 기본] 2일차 - 특별한 정렬※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.보통의 정렬은 오름차순이나 내림차순으로 이루어지지만, 이번에는 특별한 정렬을 하려고 한다.N개의 정수가 주어지면 가장 큰 수, 가장 작은 수, 2번째 큰 수, 2번째 작은 수 식으로 큰 수와 작은 수를 번갈아 정렬하는 방법이다.예를 들어 1부터 10까지 10개의 숫자가 주어지면 다음과 같이 정렬한다. 10 1 9 2 8 3 7 4 6 5 주어진 숫자에 대해 특별한 정렬을 한 결과를 10개까지 출력하시오  [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다.  1<=T<=50다음 줄에 정수의 개수 N이 주어지고 다음 줄에 N개의 정수 ai가 주어진다. 10<=N<=100, 1<=ai<=100 [출력] 각 줄마다 "T" (T는 테스트 케이스 번호)를 출력한 뒤, 특별히 정렬된 숫자를 10개까지 출력한다.```입력:3101 2 3 4 5 6 7 8 9 101067 39 16 49 60 28 8 85 89 11203 69 21 46 43 60 62 97 64 30 17 88 18 98 71 75 59 36 9 26	 출력:1 10 1 9 2 8 3 7 4 6 52 89 8 85 11 67 16 60 28 49 393 98 3 97 9 88 17 75 18 71 21	 ```<jupyter_code># Make input file
f = open("input.txt", "w")
f.write("3\n")
f.write("10\n")
f.write("1 2 3 4 5 6 7 8 9 10\n")
f.write("10\n")
f.write("67 39 16 49 60 28 8 85 89 11\n")
f.write("20\n")
f.write("3 69 21 46 43 60 62 97 64 30 17 88 18 98 71 75 59 36 9 26\n")
f.close()
# for Jupyter Notebook
###
f = open("input.txt", "r")
input = f.readline
###

T = int(input())

for test_case in range(1, T + 1):
    
    n = int(input())
    nn = list( map(int, input().split()) )
    nn.sort(reverse=True)
    result = [0 for _ in range(10)]
    for i in range(10):
        if i % 2 == 0:
            result[i] = nn[ int( i/2 ) ]
        else:
            result[i] = nn[ int(n - (i+1) /2)]
    
    print("#"+str(test_case), end=' ')
    for r in result:
        print(r, end=' ')
    print()<jupyter_output>#1 10 1 9 2 8 3 7 4 6 5 
#2 89 8 85 11 67 16 60 28 49 39 
#3 98 3 97 9 88 17 75 18 71 21
{'fraction_non_alphanumeric': 0.14505759442807392, 'fraction_numerical': 0.09817840878649879, 'mean_word_length': 2.1203510238194734, 'pattern_counts': {'":': 0, '<': 28, '<?xml version=': 0, '>': 15, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 5, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '419976', 'license': 'Apache-2.0', 'n_tokens_mistral': 5100, 'n_tokens_neox': 5438, 'n_words': 1274, 'path': 'notebook/SWExpertAcademy/Course/ProgramingIntermediate/.ipynb_checkpoints/01_List2-checkpoint.ipynb', 'repo_name': 'Kyungpyo-Kim/DataStructure_Algorithm', 'size': '7466'}