ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ์๋ง ์์กดํ๋ํฐ๋ผ, coldility ๋ผ๋ ์๋ก์ด ์ฝ๋ํ์ด ํ๋ซํผ์ ์๊ฒ ๋์๊ณ ,
๋ฌธ์ ๋ฅผ ์ด์ฌํ ํ์ด๋ณด๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค.
๋ฌธ์ ๋ฅผ ํ์ดํ๋ฉด์ ์ฒ์์ผ๋ก ๋๋ ๊ฒ์ ์ฝ๋์ ํจ์จ์ฑ์ ์ ๊ฒฝ์จ์ผ ํ๋ ๊ฒ
๊ทธ๋์์ ๊ทธ๋ ๊ฒ ํจ์จ์ฑ์ ๋ํด์ ๊น๊ฒ ์๊ฐํด๋ณด์ง ๋ชปํ์ง๋ง,
ํจ์จ์ฑ์ด ์ข์ง์๊ฑฐ๋ ์ง๋์น ๋ฐ๋ณต๋ฌธ์ด ๊ณ์๋๋ ์ฝ๋๋.... score์์ ๊น์ด๊ฒ ๋๋ค...
๋ฌธ์ ๋ฅผ ํ๋ฉฐ ๋ฐฐ์ด ์
1. ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ค.
2. ์ ๋ ฅ๊ฐ์ ๋ฒ์ ํฌ๊ธฐ๋ฅผ ์์์ผ ํ๋ค.
3. ์์๋ณต์ก๋์ ๋ํ ๊ณ ๋ฏผ์ ํ์ (https://rrecoder.tistory.com/63)
๐ 2- OddOccurrencesInArray
๋ฐฐ์ด์์ ์์ ๊ณผ ์ค๋ณตํ ๊ฐ์ ๊ฐ์๊ฐ ํ์์ธ ๊ฐ์ return ํ๋ ๋ฌธ์
์ฒซ ํ์ด
def solution(A):
cntDic={}
for i in A:
if i not in cntDic:
cnt=0
for j in A:
if j==i:
cnt+=1
cntDic[i]=cnt
for num,cnt in cntDic.items():
if cnt%2==1:
return num
1) cnt ๋์ ๋๋ฆฌ ์์ฑ
2) ๋์ ๋๋ฆฌ์ ์์ง ์์ผ๋ฉด ํด๋น ๊ฐ์ for๋ฌธ์ ๋๋ฉฐ ์ฐพ์์ ๋ํด์ค
3) ๊ทธ ๋์ ๋๋ฆฌ๋ฅผ ๋ค์ ๋๋ฉฐ ๊ฐ์๊ฐ ํ์์ธ ๊ฐ์ ๋ํด์ค
๊ฒฐ๊ณผ๋ ์ฒ์ฐธํ๋ค.
์ผ๋จ bigNumber๋ฅผ ์ ํ ์ ๊ฒฝ์ฐ์ง ์์๋ ํฐ์ด๊ธฐ์ ์ฑ๋ฅํ ์คํธ์์ ์ ๋ถ ๋นต์ !
์ผ๋จ Detected time complexity:O(N**2) ใน์ฆ ์๊ฐ๋ณต์ก๋ ํ๊ณ๊ฐ O(N**2)์ธ๋ฐ
for๋ฌธ ์์์ if ๋ฌธ์ ํตํด ๋ฐฐ์ด์ ํ์ํ๋ ๊ฒ N^2
๊ทผ๋ฐ ๋๋ for ๋ฌธ ์์์ if ๋ฌธ ์์์ for ๋ฌธ ?
๋ค๋ฅธ ํ์ด
def solution(A):
if len(A) ==1:
return A[0]
A = sorted(A)
for i in range(0,len(A),2):
if i+1 == len(A):
return A[i]
if A[i]!=A[i+1]:
return A[i]
์๊ฐ๋ณต์ก๋ : O(N) or O(N*logN)
sorted์ ์๊ฐ๋ณต์ก๋ : O(N*logN)
์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ฐ๋ผ ๋๊ฐ์ฉ for ๋ฌธ์ ๋๋ฉฐ ๋ค์ ๊ฐ๊ณผ ๋ค๋ฅด๋ฉด !
์ฐธ๊ณ :https://wayhome25.github.io/algorithm/2017/04/30/OddOccurrencesInArray/
๐ STEP 3-1 ) FrogJump
๋ด ํ์ด (100%)
def solution(X, Y, D):
Y-=X
if Y%D ==0:
return Y//D
else:
return Y//D+1
๊ฐ๊ตฌ๋ฆฌ๊ฐ ๋ชฉํ ์ง์ ๊น์ง ๊ฐ๋ ์ต์ ํ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ธ๋ฐ ,
์๊ฐ์ ์กฐ๊ธ ํด๋ณด๋ ์ฝ๊ฒ ํ ์ ์์๋ค..
๐ STEP 3-2 ) PermMissingElem
๋ด ํ์ด(50%)
def solution(A):
if len(A)==1:
return A[0]
A=sorted(A)
for idx in range(1,len(A)+1):
if A[idx]-1 != A[idx-1]:
return A[idx]-1
1) A๋ฅผ ์ ๋ ฌํ ํ
2) A๋ฅผ ๋๋ฉฐ ํ์ฌ ๊ฐ+1 ๊ณผ ๋ค์๊ฐ์ด ๊ฐ์ง ์์ผ๋ฉด
3) ํ์ฌ๊ฐ+1์ด์๋๊ฒ์ด๋ return
ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํ์ดํ๋๋ฐ ์ค๋ต์ด ๋์๋ค.
๋ฐํ์ ์๋ฌ๊ฐ ๋์ค๋๊ฑธ ๋ณด๋ ์์ฒญ๋๊ฒ ๋ง์ ๋ฒ์์ ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ฐฐ์ด์ ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ๋ถ๊ฐ๋ฅํ ๊ฒ ๊ฐ๋ค.
๊ณ ๋ก ์ ๋ ฌ์ ํ์ง ์์์ผ ํ๋ค!
๋ค๋ฅธ ํ์ด
def solution(A):
idxArr= [0]* (len(A)+1)
for i in A:
idxArr[i-1]=1
return idxArr.index(0)+1
1) A์ ์ธ๋ฑ์ค ๋ฐฐ์ด์ ์์ฑ
2) A๋ฅผ ๋๋ฉฐ A์ ๊ฐ์ ์ธ๋ฑ์ค๋ก ์ฌ์ฉ
idxArr = [1,1,1,0,1] ์ด ๊ฐ์ด ๋๋ฉด์ ์ฑ์์ง์ง ์์ ๋ถ๋ถ์ idx+1 ๊ฐ์ด ๋ต์ด ๋๋ค.
๋ค๋ฅธํ์ด
def solution(A):
return sum(range(len(A)+2)) - sum(A)
[1,2,3,5] 15-11 = 4 ๊ฐ ๋์ค๋๋ฐ
[0,1,2,3,4,5] - [1,2,3,5] ๋ผ๊ณ ๋ณผ ์ ์๋ค.
๐ STEP 3-3 ) TapeEquilibrium
๋ด ํ์ด1 ( 53% )
def solution(A):
sumArr=[]
length=len(A)
for i in range(1,len(A)):
sumArr.append(abs(sum(A[:i])-sum(A[i:length])))
return min(sumArr)
1) ๋ฐ๋ณต๋ฌธ์ ๋๋ฉฐ ํด๋น ์ซ์์ ๋ฒ์๊น์ง slicingํ ๋ฐฐ์ด์ ํฉ๊ณผ ์ฐจ๋ฅผ ๊ตฌํ๋ค
2) ๊ทธ ๊ฐ์ sumArr์ ๋ฃ๊ณ ์ต์ข ๊ฐ ๊ตฌํ๊ธฐ
์๋ง min๊ฐ์ ๊ตฌํ๋ ๋ถ๋ถ์์ ๋ง์ ์๊ฐ์ ์์ํ๊ฒ์ผ๋ก ์์ํ๋ค.
์๊ฐ๋ณต์ก๋ ํ๊ณ๋ = O(N * N)
์ญ์ ๋ชจ๋ ๋ ๋ชจ๋ ์๊ฐ ๋๋ ธ๋ค..
๋ค๋ฅธ ํ์ด
def solution(A):
firstSum=0
lastSum=sum(A)
minSum=None
for i in range(1,len(A)):
firstSum +=A[i-1]
lastSum-=A[i-1]
diff = abs(firstSum-lastSum)
if minSum==None:
minSum = diff
else:
minSum = min(minSum,diff)
return minSum
๋์ ๋ค๋ฅธ ์ (์ฆ ์ด๋์์ ์๊ฐ์ ๊ฐ์์์ผฐ๋.)
1) Sum์ ํ๋ฒ๋ง ํ๋ค
๊ทธ ํ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉฐ ์์น์ ๋ฐ๋ฅธ ๊ฐ์ ๋ํ๊ณ ๋นผ์ค๋ค
2) min์ ํ์์ ์ํด ํ์ง๋ง ๋ง์ ๊ฐ๋ค์ ํ๋ฒ์ ๋ฃ์ ํ ํ์ง ์๊ณ ๊ทธ๋๊ทธ๋ ์์ ๋ฒ์๋ก ํ๋ค.
'๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์ฝ๋ค] ๊ธฐ์ถ๋ฌธ์ - ๊ทธ๋ฆฌ๋ (0) | 2021.08.25 |
---|---|
[์ด์ฝ๋ค] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (0) | 2021.08.23 |
[์ด์ฝ๋ค] ์ ๋ ฌ & ์ด์งํ์ ์ค์ ๋ฌธ์ (0) | 2021.07.28 |
[์ด์ฝ๋ค] ๊ทธ๋ฆฌ๋ค & ๊ตฌํ ์ค์ ๋ฌธ์ (0) | 2021.07.23 |
[codility] Lesson 4) FrogRiverOne MaxCounter (0) | 2021.07.10 |
๋๊ธ