[SWEA] D2 문제 풀이 - 2

kiteB·2022년 6월 1일
1

SWEA

목록 보기
3/6
post-thumbnail

📌 두 개의 숫자열 (1959)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    n, m = map(int, input().split())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    answer = 0

    for i in range(abs(n - m) + 1):
        temp = 0
        for j in range(min(n, m)):
            if n > m:
                temp += (a[j + i] * b[j])
            else:
                temp += (a[j] * b[j + i])

        answer = max(answer, temp)
    print(f'#{test_case} {answer}')

📌 숫자 배열 회전 (1961)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    n = int(input())
    array = [list(map(int, input().split())) for _ in range(n)]
    array1 = list(map(list, zip(*array[::-1])))
    array2 = list(map(list, zip(*array1[::-1])))
    array3 = list(map(list, zip(*array2[::-1])))

    print(f"#{test_case}")
    for j in range(n):
        print(''.join(map(str, array1[j])), end=' ')
        print(''.join(map(str, array2[j])), end=' ')
        print(''.join(map(str, array3[j])))

📌 숫자를 정렬하자 (1966)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    n = int(input())
    numbers = sorted(list(map(int, input().split())))
    print(f'#{test_case}', end=' ')
    print(*numbers)

📌 쉬운 거스름돈 (1970)

🔗 문제 링크

T = int(input())
coins = [50000, 10000, 5000, 1000, 500, 100, 50, 10]

for test_case in range(1, T + 1):
    money = int(input())
    answer = []

    for coin in coins:
        answer.append(money // coin)
        money %= coin
    print(f'#{test_case}')
    print(*answer)

📌 스도쿠 검증 (1974)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    board = [list(map(int, input().split())) for _ in range(9)]
    flag = True

    # 가로줄 검증
    for i in range(9):
        numbers = [0] * 10
        for j in range(9):
            numbers[board[i][j]] += 1

        for k in range(1, 10):
            if numbers[k] == 0:
                flag = False
                break

    # 세로줄 검증
    for i in range(9):
        numbers = [0] * 10
        for j in range(9):
            numbers[board[j][i]] += 1

        for k in range(1, 10):
            if numbers[k] == 0:
                flag = False
                break

    # 3 X 3 검증
    for k in range(0, 7, 3):
        temp = 0
        for i in range(k, k + 3):
            for j in range(k, k + 3):
                temp += board[i][j]

        if temp != 45:
            flag = False
            break

    if flag:
        print(f"#{test_case} 1")
    else:
        print(f"#{test_case} 0")

📌 시각 덧셈 (1976)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    a, b, c, d = map(int, input().split())
    hour = a + c
    minute = b + d

	if minute >= 60:
        minute -= 60
        hour += 1

	if hour > 12:
        hour -= 12
    
    print(f"#{test_case} {hour} {minute}")

📌 어디에 단어가 들어갈 수 있을까 (1979)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    n, k = map(int, input().split())
    board = [list(map(int, input().split())) for _ in range(n)]

    answer = 0
    for i in range(n):
        count = 0
        for j in range(n):
            if board[i][j] == 1:
                count += 1
            else:
                if count == k:
                    answer += 1
                count = 0

        if count == k:
            answer += 1

    for j in range(n):
        count = 0
        for i in range(n):
            if board[i][j] == 1:
                count += 1
            else:
                if count == k:
                    answer += 1
                count = 0
        if count == k:
            answer += 1

    print(f"#{test_case} {answer}")

📌 중간 평균값 구하기 (1984)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    scores = sorted(list(map(int, input().split())))
    print(f'#{test_case} {round(sum(scores[1:9]) / 8)}')

📌 지그재그 숫자 (1986)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    n = int(input())
    answer = 0

    for i in range(1, n + 1):
        if i % 2 != 0:
            answer += i
        else:
            answer -= i
    print(f'#{test_case} {answer}')

📌 초심자의 회문 검사 (1989)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    s = input()
    answer = 0

    if s == s[::-1]:
        answer = 1
    print(f'#{test_case} {answer}')

📌 파리 퇴치 (2001)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    n, m = map(int, input().split())
    board = [list(map(int, input().split())) for _ in range(n)]
    answer = 0

    for i in range(n - m + 1):
        for j in range(n - m + 1):
            temp = 0

            for y in range(i, i + m):
                for x in range(j, j + m):
                    temp += board[y][x]
            answer = max(temp, answer)
    print(f"#{test_case} {answer}")

📌 파스칼의 삼각형 (2005)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    n = int(input())
    triangle = [[1 for j in range(i)] for i in range(1, n + 1)]

    for i in range(2, n):
        for j in range(1, i):
            triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j]

    print(f"#{test_case}")
    for t in triangle:
        print(*t)

📌 패턴 마디의 길이 (2007)

🔗 문제 링크

T = int(input())

for test_case in range(1, T + 1):
    s = input()
    target = ''

    for i in range(1, 11):
        if s[0:i] == s[i:i + i]:
            target = s[0:i]
            break

    print(f'#{test_case} {len(target)}')
profile
🚧 https://coji.tistory.com/ 🏠

0개의 댓글