본문 바로가기

카테고리 없음

코딜리티 lesson 5 PrefixSum, CountDiv, GenomicRangeQuery, MinAbgTwoSlice

PrefixSum

[최초풀이]

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A):
    cnt = 0
    for i in range(len(A)):
        if A[i] == 0:
            cnt += sum(A[i+1:])
    return cnt

[다른풀이]

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A):
    zero = 0
    count = 0
    for i in range(len(A)):
        if A[i] == 0:
            zero += 1
        else:
            count += zero
    
    if count > 1000000000:
        return -1
    else:
        return count

 

CountDiv

[최초풀이]

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A, B, K):
    if A == B:
    	if A % K == 0:
        	return 1
        else:
        	return 0
    cnt = 0   
    for i in range(A, B+1):
        if i % K == 0:
            cnt += 1
    return cnt

[다른풀이]

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A, B, K):
    XA = A//K
    XB = B//K
    YA = A % K
    count = XB - XA

    if YA == 0:
        count += 1
    
    return count

 

 

GenomicRangeQuery

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(S, P, Q):
    ans = []

    for i in range(len(P)):
        string = S[P[i] : Q[i]+1]
        string2 = sorted(string)
        s= string2[0]

        if s == 'A':
            ans.append(1)
        elif s == 'C':
            ans.append(2)
        elif s == 'G':
            ans.append(3)
        elif s == 'T':
            ans.append(4)

    return ans

[다른풀이]

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(S, P, Q):
    ans = []

    for i in range(len(P)):
        string = S[P[i] : Q[i]+1]
        
        if 'A' in string:
            ans.append(1)
        elif 'C' in string:
            ans.append(2)
        elif 'G' in string:
            ans.append(3)
        elif 'T' in string:
            ans.append(4)

    return ans

 

MinAbgTwoSlice

[최초풀이]

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A):
    minNum = 100000
    minIdx = 0
    for i in range(len(A)-1):
        sumA = A[i] + A[i+1]
        if sumA < minNum:
            minNum = sumA
            minIdx = i
    return minIdx

[다른풀이]

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A):
    minA = sum(A[0:2])/2
    res = 0

    if len(A) == 2:
        return res
    for i in range(3, len(A)+1):
        avg = sum(A[i-2:i])/2
        if avg < minA:
            res = i-2
            minA = avg
        avg = sum(A[i-3:i])/3  #3개짜리
        if avg < minA:
            res = i-3
            minA = avg
    return res