해리의 데브로그

(SW 문제해결 기본 - LIST2) SWEA 4839 - 이진탐색

|

문제

  • SWEA 4839 - [파이썬 S/W 문제해결 기본 2일차] LIST2 - 이진탐색
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

TC = int(input())

for tc in range(1, TC + 1):
    info = list(map(int, input().split()))

    result = []
    for j in range(2):
        start = 1
        end = info[0]
        page = info[j+1]
        cnt = 0

        while start <= end:
            mid = (start + end) // 2
            if mid == page:
                break
            elif mid < page:
                start = mid
                cnt += 1
            else:
                end = mid
                cnt += 1

        result.append(cnt)

    if result[0] < result[1]:
        print('#%s'%tc,'A')
    elif result[0] == result[1]:
        print('#%s'%tc,0)
    else:
        print('#%s'%tc,'B')

(SW 문제해결 기본 - LIST2) SWEA 4837 - 부분집합의 합

|

문제

  • SWEA 4837 - [파이썬 S/W 문제해결 기본 2일차] LIST2 - 부분집합의 합
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

  • 부분집합을 구할 때, 비트연산자를 이용하였음.
TC  = int(input())
num = [1,2,3,4,5,6,7,8,9,10,11,12]
Len = len(num)

#부분집합 구하기
lst = []
for i in range(1<<Len):
    sub_lst = []
    for j in range(Len):
        if i & (1<<j):
            sub_lst.append(num[j])
    lst.append(sub_lst)


for tc in range(1, TC+1):
    N, K = map(int, input().split())

    #길이 맞는 리스트 구하기
    len_lst = []
    for i in lst:
        if len(i) == N:
            len_lst.append(i)


    #합 일치 유무 확인
    result = 0
    for i in len_lst:
        if sum(i) == K:
            result += 1

    print('#%s %d'%(tc, result))

(SW 문제해결 기본 - LIST2) SWEA 4836 - 색칠하기

|

문제

  • SWEA 4836 - [파이썬 S/W 문제해결 기본 2일차] LIST2 - 색칠하기
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

TC = int(input())
for tc in range(1, TC+1):
    N = int(input())
    red_lst = []
    blue_lst = []
    for i in range(N):
        y1, x1, y2, x2, color = map(int, input().split())
        for y in range(y1, y2+1):
            for x in range(x1, x2+1):
                if color == 1:
                    red_lst.append((y,x))
                elif color == 2:
                    blue_lst.append((y,x))

    result = []
    if len(red_lst) > len(blue_lst):
        for i in blue_lst:
            if i in red_lst:
                result.append(i)

    if len(red_lst) < len(blue_lst):
        for i in red_lst:
            if i in blue_lst:
                result.append(i)

    print('#%s %d'%(tc, len(result)))

(SW 문제해결 기본 - LIST1) SWEA 4835 - 구간합

|

문제

  • SWEA 4835 - [파이썬 S/W 문제해결 기본 1일차] LIST1 - 구간합
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

TC = int(input())

for tc in range(1, TC+1):
    N, M = map(int, input().split())
    Data = list(map(int, input().split()))

    lst = []
    for i in range(N-M+1):
        lst.append(sum(Data[i:i+M]))

    print('#%s %d'%(tc, max(lst)-min(lst)))

(SW 문제해결 기본 - LIST1) SWEA 4834 - 숫자카드

|

문제

  • SWEA 4834 - [파이썬 S/W 문제해결 기본 1일차] LIST1 - 숫자카드
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

TC = int(input())
for tc in range(1, TC+1):
    N = int(input())
    Data = input()
    Data = [int(_) for _ in Data]
    cnt_lst = [0]*10

    for i in range(N):
        cnt_lst[Data[i]] += 1

    max_index, max_num = 0, 0
    for i in range(len(cnt_lst)-1,-1,-1):
        if cnt_lst[i] > max_index:
            max_index = cnt_lst[i]
            max_num = i

    print('#%s %d %d'%(tc, max_num, max_index))