본문 바로가기
프로그래밍 공부/코테 풀이 암기

[SWEA] Difficulty 2 문제풀이(23)

by 응_비 2022. 10. 28.

최빈수 구하기 (1204)

from collections import Counter
T = int(input())

for _ in range(T):
    n = int(input())
    numbers = list(map(int, input().split()))
    answer = 0

    counter = Counter(numbers).most_common()
    counter.sort(key=lambda x: (-x[1], -x[0]))
    print(f'#{n} {counter[0][0]}')

수도 요금 경쟁 (1284)

T = int(input())

for test_case in range(1, T + 1):
    p, q, r, s, w = map(int, input().split())
    answer = min(w * p, q + max(0, w - r) * s)
    print(f"#{test_case} {answer}")

백만 장자 프로젝트 (1859)

T = int(input())

for test_case in range(1, T + 1):
    n = int(input())
    price = list(map(int, input().split()))
    profit = 0
    max_price = price[-1]

    for i in range(n - 2, -1, -1):
        if price[i] < max_price:
            profit += (max_price - price[i])
        else:
            max_price = price[i]

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

간단한 369게임 (1926)

n = int(input())
word = ['3', '6', '9']

for i in range(1, n + 1):
    count = 0
    for w in word:
        if w in str(i):
            count += str(i).count(w)

    if count == 0:
		print(i, end=' ')
	else:
        print('-' * count, end=' ')

Base64 Decoder (1928)

T = int(input())

for test_case in range(1, T + 1):
    s = input()
    binary = ''
    answer = ''
    table = {"A": 0, "B": 1, "C": 2, "D": 3, "E": 4, "F": 5, "G": 6, "H": 7, "I": 8, "J": 9,
             "K": 10, "L": 11, "M": 12, "N": 13, "O": 14, "P": 15, "Q": 16, "R": 17, "S": 18, "T": 19,
             "U": 20, "V": 21, "W": 22, "X": 23, "Y": 24, "Z": 25, "a": 26, "b": 27, "c": 28, "d": 29,
             "e": 30, "f": 31, "g": 32, "h": 33, "i": 34, "j": 35, "k": 36, "l": 37, "m": 38, "n": 39,
             "o": 40, "p": 41, "q": 42, "r": 43, "s": 44, "t": 45, "u": 46, "v": 47, "w": 48, "x": 49,
             "y": 50, "z": 51, "0": 52, "1": 53, "2": 54, "3": 55, "4": 56, "5": 57, "6": 58, "7": 59,
             "8": 60, "9": 61, "+": 62, "/": 63}

	for i in s:
        binary += (bin(table[i])[2:]).zfill(6)

    for i in range(0, len(binary), 8):
        answer += chr(int(binary[i:i + 8], 2))
    print(f"#{test_case} {answer}")

가랏! RC카! (1940)

T = int(input())

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

    for _ in range(n):
        command = input().split()

        if command[0] == '0':
            pass
        elif command[0] == '1':
            speed += int(command[1])
        else:
            speed = max(0, speed - int(command[1]))
        distance += speed

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

간단한 소인수분해 (1945)

T = int(input())

for test_case in range(1, T + 1):
    n = int(input())
    answer = [0, 0, 0, 0, 0]
    numbers = [2, 3, 5, 7, 11]

    for i in range(4, -1, -1):
        while n % numbers[i] == 0:
            answer[i] += 1
            n //= numbers[i]

    print(f"#{test_case}", end=' ')
    print(*answer)

간단한 압축 풀기 (1946)

T = int(input())

for test_case in range(1, T + 1):
    n = int(input())
    docs = ''

    for _ in range(n):
        c, k = input().split()
        docs += c * int(k)

    print(f'#{test_case}')
    for i in range(0, len(docs), 10):
        print(docs[i:i+10])

날짜 계산기 (1948)

T = int(input())

for test_case in range(1, T + 1):
    a, b, c, d = map(int, input().split())
    calendar = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    answer = d - b + 1
    for i in range(a, c):
        answer += calendar[i]

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

달팽이 숫자 (1954)

T = int(input())

for test_case in range(1, T + 1):
    n = int(input())
    board = [[0] * n for _ in range(n)]

    num = 0
    y = 0
    x = -1
    size = n
    step = 1

    while size > 0:
        for _ in range(size):
            x += step
            num += 1
            board[y][x] = num
        size -= 1

        for _ in range(size):
            y += step
            num += 1
            board[y][x] = num
        step *= -1

    print(f"#{test_case}")
    for b in board:
        print(*b)

두 개의 숫자열 (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)}')

'프로그래밍 공부 > 코테 풀이 암기' 카테고리의 다른 글

[SWEA] Difficulty 3 문제풀이(39)  (0) 2022.11.15
[SWEA] Difficulty 1 문제풀이(19)  (1) 2022.10.12
구현_뱀  (1) 2022.10.08
DFS/BFS_감시 피하기  (1) 2022.10.08
BFS/DFS_아기상어(삼성기출)  (1) 2022.10.08

댓글