1 minute read


sport

유형별 쉬운 문제풀기

bj 1051

https://www.acmicpc.net/problem/1051

구현 문제

py solution

def solve():
    n,m=ria()
    maps=create2DArray(n,m,0)
    for row in range(n):
        maps[row]=list(map(int, list(rsa()[0])))
    
    md = min(n,m)
    
    best = -1
    for d in range(0,md):
        for sr in range(n-d):
            for sc in range(m-d):
                nr = sr+d
                nc = sc+d

                # print('d',d,'sr',sr,'sc',sc,'nr',nr,'nc',nc)
                
                fail=False
                ch = maps[sr][sc]
                if(ch != maps[sr][nc]):
                    fail=True
                elif(ch != maps[nr][sc]):
                    fail=True
                elif(ch != maps[nr][nc]):
                    fail=True
                # print('fail',fail, 'd', d)
                if not fail:
                    best = max(best, d)
    print((best+1)**2)
    
    pass

bj 11663

https://www.acmicpc.net/problem/11663

py solution

def solve():
    n,m = ria()
    dots = ria()
    dots.sort()
    
    for mm in range(m):
        start,end = ria()
        
        # search start idx
        ss = -1
        ee = n
        target = start
        while(ss+1<ee):
            mid=int((ss+ee)/2)
            if(target <= dots[mid]):
                ee = mid
            else:
                ss = mid
        # print('ee', ee)
        start_idx = ee

        # search end idx
        ss = -1
        ee = n
        target = end
        while(ss+1<ee):
            mid=int((ss+ee)/2)
            if(target < dots[mid]):
                ee = mid
            else:
                ss = mid

        end_idx = ee

        # print('start', start_idx, 'end', end_idx)
        print(end_idx-start_idx)
    
    
    pass

bj 1309 - 동물원

https://www.acmicpc.net/problem/1309

py solution

def solve():
    MOD = 9901
    N = ria()[0]
    dp = create2DArray(N, 3, -1)
    dp[0][0] = 1
    dp[0][1] = 1
    dp[0][2] = 1
    def dfs(r, k):
        if(dp[r][k]!=-1):
            return dp[r][k]
        
        ret = 0
        if(k == 0):
            ret = dfs(r-1, 1) + dfs(r-1, 2)
        elif(k == 1):
            ret = dfs(r-1, 0) + dfs(r-1, 2)
        else:
            ret = dfs(r-1, 0) + dfs(r-1, 1) + dfs(r-1, 2)
        ret %= MOD
        dp[r][k] = ret
        return ret
    
    ans = (dfs(N-1,0) + dfs(N-1,1) + dfs(N-1,2)) % MOD
    print(ans)
    
    pass

Comments