๐ 4-4) PermCheck
1๋ถํฐ N๊น์ง์ +1 ์ฉ ์ฆ๊ฐํ๋ ์์ด์ธ์ง ์๋์ง ํ๋ณํ์ฌ๋ผ
์ฒ์ํ์ด
def solution(A):
A.sort()
if len(A)>1:
for i in range(len(A)-1):
if A[i]+1==A[i+1]:
ans=1
else:
ans=0
break
return ans
else:
if A[0]==1:
return 1
else:
return 0
A์ ๋ฐฐ์ด์ ๋ค์ ๊ฐ๊ณผ ๋น๊ตํ๊ณ
๊ทธ ๊ฐ๊ณผ 1์ฐจ์ด ๋ ๋๋ง ์ ๋ต ์๋๋ฉด 0
A๋ฐฐ์ด ์ธ์๊ฐ ํ๋๋ผ๋ฉด 1์ผ๋๋ง ์ ๋ต ์๋๋ฉด 0 ์ด๋ผ๋ ๋ก์ง์ผ๋ก ํ์์ง๋ง..
ํ๋ ํ ์ผ๋ฅผ ์ ์ฌํ ์ฝ์ด๋ณด๋
[2,3,4,5...] 1์ด ์๋ ์๋ก ์์ํ๋ ์ฐ์์์ด
[1,1] ๋๋ธ ๋๊ฐ๊ฐ ์์กํ๋๊ฑธ ํ์ธํ๊ณ
์ ๋ต ํ์ด
def solution(A):
A.sort()
if A[0]==1:
if len(A)<2:
return 1
else:
for i in range(len(A)-1):
if A[i]+1==A[i+1]:
ans=1
else:
ans=0
break
return ans
else:
return 0
์ด๋ ๊ฒ ๋ฐ๊ฟจ๋ค.
๋ฌธ์ ๋ฅผ ๊ผผ๊ผผํ ์ฝ์ด์ผ ํ๋ค๋ ๊ตํ์ ์ป์๋ค.
๋ค๋ฅธ ํ์ด
def solution(A):
if max(A) != len(A) or len(set(A)) != len(A):
return 0
return 1
A = [1,2,3,4,5,6]
์ต๋๊ฐ = 6
๊ธธ์ด = 6
์ด๋ฏ๋ก ์์ ์กฐ๊ฑด๋ค์ ์ด์ฉํด ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
๐ 5-1 ) CountDiv
A์ B ์ฌ์ด์ ์๋ ์๋ค ์ค K๋ก ๋๋ ์ง๋ ์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ผ!
์? ๋ชจ์ผ ์ฝ๋ค ๋ผ๊ณ ์๊ฐํ์ง๋ง. ์ญ์๋ ์ฝ๋๋ฆฌํฐ๋ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ทธ๋ฅ ์ฃผ์ง ์์๋ค.
1์ฐจ์๋ (์๊ฐ ์ด๊ณผ)
def solution(A, B, K):
cnt=0
for i in range(A,B+1):
if(i%K==0):
cnt+=1
return cnt
์ฌ์ค ๋ง์์ผ๋ก ์ด๋ ๊ฒ ์ ๋ ํต๊ณผ ๋ชปํ ๊ฑฐ ์๊ณ ์์์ง๋ง ์ผ๋จ ํด๋ณธ๊ฑฐ์๋ค.ใ ใ
์ํ๋ ์๊ฐ ๋ณต์ก๋๋ O(N) ๊ทธ๋ฌ๋ ๋๋ O(N^2) ๊ณ ์น์!!!!
์ฌ๊ธฐ์ O(B-A)๋ arr[a:b] ์๊ฐ์ด
0 < a,b < n ์ด๋ผ๋ ๊ฐ์ ์ํ์ ํ๊ธฐํ ๊ฒ์ด๊ณ O(N)์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
2์ฐจ ์๋(ํ๋ฆฐ ๋ต)
def solution(A, B, K):
if A<=K:
A=K
namA =A%K
namB =B%K
ans=B-A+1-namA-namB
ans= ans//K
return ans+1
๊ทธ๋ค๋ฆ์ผ๋ก ์๊ฐํด๋ณธ๊ฑด ์ํ์ ์ผ๋ก ์ฌ๋ฌ๊ฐ์ง ํ ์คํธ์ผ์ด์ค๋ฅผ ์๊ฐํด๋ณด๋ฉฐ ๋ง๋ ๊ณต์
1) A๊ฐ K๋ณด๋ค ์์ผ๋ฉด ์๋ฏธ ์์ผ๋ฏ๋ก A๋ฅผ K๋ถํฐ ์์ํ๊ฒ ๋ง๋ค๊ณ
2) ๊ฐ๊ฐ์ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ค์
3) ๊ทธ ์ฌ์ด์ ์๋ ๊ฐ์์ค์์ ๋๋จธ์ง๋งํผ์ ๋นผ๊ณ ๋๋๋ฉด ๋ต!
์๋ชป์๊ฐํ๋ค~~ ๋๋จธ์ง๊ฐ ์๋๋ผ ๋ชซ์ด ๋ช๊ฐ์ฉ ๋ค์ด์๋์ง ๊ฐ์ฐํด์ ๋นผ๋ฉด ๋๋ ๊ฑฐ์๋ค..
๋ค๋ฅธํ์ด
def solution(A, B, K):
mocA = A//K
namA =A%K
mocB = B//K
cnt = mocB-mocA
if namA==0:
cnt+=1
return cnt
์ํ์ ์ธ ๊ณ์ฐ์ด ํ์ํ๋ ๋ฌธ์ !
๐ 5-2) GenomicRangeQuery
๋ฐฐ์ด ๋๊ฐ์ง๊ฐ ์ฃผ์ด์ง ๋ ์ ์ ์ ์ต์๊ฐ(?)์ ํ์ด๋ณด๊ธฐ
์ฒ์ ํ์ด
def solution(S, P, Q):
dObj = {'A':1,'C':2,'G':3,'T':4}
ansArr =[]
for i,j in zip(P,Q):
if i==j:
ansArr.append(dObj[S[i]])
else:
tempArr=[]
for k in S[i:j]:
tempArr.append(dObj[k])
ansArr.append(min(tempArr))
return(ansArr)
1) P,Q ๋ฅผ๋์์ ๋๋ฉด์ ๋๊ฐ์ง๊ฐ์ ๋นผ์
2) S ์์์ฌ๋ผ์ด์ฑ์ํ๋ค.
3) ๊ทธ ์ฌ๋ผ์ด์ฑ ์์์ ๋๋ฉด์ dObj์ ๋น๊ตํด ์ต์๊ฐ์ ์ฐพ๋๋ค
4) ์ต์๊ฐ ๋ฐฐ์ด return
์ด ๋ก์ง์ ์๋ชป๋ ์ ์ ๋๊ฐ์ง์ด๋ค.
1.slice๋ฅผ i ~j+1 ๊น์ง ํด์ผํ๋ค
2. ์๊ฐ ๋ณต์ก๋ ์คํจ
์ ํ ์๊ฐ ๋ณต์ก๋๋ O(nm)์ด์๋๋ฐ ์ด์ค for๋ฌธ์ ๋ง๋ค์ด O(n^2)์ด ๋์๋ค.
๊ฐ์ ํ์ด
def solution(S, P, Q):
dObj = {'A':1,'C':2,'G':3,'T':4}
ans =[]
for i,j in zip(P,Q):
minNum=5
if i==j:
ans.append(dObj[S[i]])
else:
if 'A' in S[i:j+1]:
num = 1
elif 'C' in S[i:j+1]:
num = 2
elif 'G' in S[i:j+1]:
num = 3
elif 'T' in S[i:j+1]:
num = 4
if minNum > num:
minNum = num
ans.append(minNum)
return(ans)
for๋ฌธ์ ํ๋ ์ ๊ฑฐํ๊ณ ์ฌ๋ผ์ด์ฑ์ ๊ณ ์ณ์ฃผ์๋๋ ๋ต ๋ฑ์ฅ!!!
์๊ฐ์ ํจ์จ์ฑ์ ์๊ฐํด์ผ ๊ฒ ๋ค๋ ๊ตํ์ ์ป์๋ค.
๋๊ธ