/images/jg_02.jpg

SW Expert Academy_D3 4676, 4615, 4579, 4522

D3_4676_늘어지는 소리 만들기

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
for T in range(int(input())):
    sent = list(input())          # wow
    H = int(input())
    po = sorted(list(map(int, input().split())))        # 2 3 2

    for i in range(H):
        a = po[i]+i
        sent.insert(a,'-')

    print('#{} {}'.format(T+1, ''.join(sent)))
    
# 단순 산수로 해결

D3_4615_재미있는 오셀로 게임

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
dx = [0, 1, 1, 1, 0, -1, -1, -1]
dy = [1, 1, 0, -1, -1, -1, 0, 1]

def dfs(x, y, i ,stone):
    if board[x][y] == 0:
        return 0
    elif board[x][y] == stone:
        return 1
    else:
        if dfs(x+dx[i], y+dy[i], i, stone):
            board[x][y] = stone
            return 1
        else:
            return 0


for T in range(int(input())):
    N, M = map(int, input().split())
    command = [list(map(int, input().split())) for _ in range(M)]
    board = [[0]*(N+2) for _ in range(N+2)]
    board[N//2+1][N//2+1] = 2
    board[N//2][N//2] = 2
    board[N//2][N//2+1] = 1
    board[N//2+1][N//2] = 1

    for x, y, stone in command:
        for i in range(8):
            board[x][y] = stone
            dfs(x+dx[i], y+dy[i], i, stone)

    B = 0
    W = 0
    for i in range(N):
        for j in range(N):
            if board[i+1][j+1] == 1:
                B += 1
            elif board[i+1][j+1] == 2:
                W += 1

    print(f'#{T+1} {B} {W}')
    
# dfs를 연습해볼 수 있는 좋은 문제라고 생각한다. 
# 추가적인 조건이 있어 dfs를 많이 사용해보지 못한 나는 해결하는데 오랜 시간이 걸렸다.

SW Expert Academy_D3 5162, 4789, 4751, 4698

D3_5162_두가지 빵의 딜레마

1
2
3
4
5
6
7
for T in range(int(input())):
    A, B, C = map(int, input().split())

    N = min(A, B)
    print("#{} {}".format(T+1, int(C/N)))
    
# 단순 산수로 해결

D3_4789_성공적인 공연 기획

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
for T in range(int(input())):
    P = list(map(int, map(str, input())))	
    need = P[0]
    count = 0
    for i in range(1, len(P)):
        if need >= i:
            need += P[i]
        else:
            count += i - need
            need = i + P[i]

    print(f'#{T+1} {count}')
    
# 문제를 이해하는 것이 Point였다.
# 먼저 str로 input을 받아 개별 숫자로 나누고 바로 int 변경하여 인자를 받음.
# 
# "i번째 글자가 의미하는 바는 기립 박수를 하고 있는 사람이 i-1명 이상일 때 기립 박수를 하는 사람의 수"
# Test case3의 경우 (09) 9는 큰 의미 없이 2번째 글자임으로 기립박수를 하고 있는 사람이 1명일 이상일 때 기립박수를 친다.
# 즉 index만 가지고 조건을 판단 하면 된다!

SW Expert Academy_D3 5431, 5356, 5293, 5215

D3_5431_민석이의 과제 체크하기

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
for T in range(int(input())):
    N, K = map(int, input().split())
    P = list(map(int, input().split()))

    result = []
    for i in range(1,N+1):
        if i not in P:
            result.append(str(i))

    print('#{} {}'.format(T+1, ' '.join(result)))
    
# 제출한 수강생 리스트를 만들고(P) 이를 for로 돌리며 검증