본문 바로가기
Problem Solving/SWEA

[ SWEA ] D3 - 11688, 5431, 2805, 1228 - python 문제풀이

by IM조이 2021. 7. 5.

11688 Calkin-wilf tree 1
접근 : 문제를 읽자마자 트리형식, 재귀로 풀면 빠를 것 같다는 생각이 들어 바로 구현
- 문자열, 분모에 들어갈 수, 분자에 들어갈 수를 넘겨주고 문자열의 0번째로 조건 판별
- 재귀 종료 조건 : 문자열의 길이가 0일 때 == 더 이상 깊게 들어갈 필요가 없을 때

def tree(idx):
    global route,up,down
    if route[idx] == 'L':
        down = up+down
    else:
        up = up+down
    if idx == len(route)-1:
        return
    else:
        tree(idx+1)

for tc in range(int(input())):
    route = list(input())
    up, down = 1, 1
    result = tree(0)
    print("#{} {} {}".format(tc+1,up,down))

 

5431 민석이의 과제 체크하기

for tc in range(int(input())):
    N,Done = map(int, input().split())
    info = list(map(int, input().split()))
    r = list(filter(lambda x:x not in info,range(1,N+1)))
    print("#{} {}".format(tc+1, " ".join(map(str,r))))

 

2805 농작물 수확하기
규칙을 찾으면 수월하게 풀 수 있는 문제

for tc in range(int(input())):
    N = int(input())
    ground = [input() for _ in range(N)]
    cnt = 0
    for i in range(N):
        pick = abs(i-N//2)
        scope = ground[i][pick:N-pick]
        for profit in scope:
            cnt += int(profit)
    print("#{} {}".format(tc+1, cnt))

이 문제에서 input을 받을 때 그냥 input()으로 받을 수도 있고, list(input())으로 받을 수도 있는데 은근히 시간차이가 살짝 난다.

(위) list(input()) 방식   vs  (아래) input() 방식

 

1228 암호문 1
조건 맞춰서 차근차근 구현하면 금방 풀림

for tc in range(10):
    a = int(input())
    b = list(map(int, input().split()))
    c = int(input())
    d = list(input().split())
    for i in range(len(d)):
        if d[i] == 'I':
            idx = int(d[i+1])
            nums = int(d[i+2])
            for j in range(nums):
                b.insert(idx+j,int(d[i+2+(j+1)]))
        else:
            continue
    print('#{} {}'.format(tc+1,' '.join(map(str,b[:10]))))

댓글