โ 10989 ์ ์ ๋ ฌํ๊ธฐ 3 โ
import sys
input = sys.stdin.readline
N = int(input())
l = [0]*10000
for _ in range(N):
n = int(input())
l[n-1] += 1
cnt = 0
for x in l:
cnt += 1
if x != 0:
for _ in range(x):
print(cnt)
๐ฏโ๏ธ ๋ฉ๋ชจ๋ฆฌ 8MB, ์๊ฐ ์ ํ 5์ด๋ก ๋ฉ๋ชจ๋ฆฌ & ์๊ฐ ๋ชจ๋ ์ ๊ฒฝ์จ์ผ ํ๋ค
โ ์ต๋ ์ฒ๋ง ๊ฐ์ ์๋ฅผ ์ ๋ ฅ๋ฐ์์ผ ํ๋ฏ๋ก ๋๋์ ์ ์ถ๋ ฅ → ๋น ๋ฅธ ์ ์ถ๋ ฅ ํด๊ฒฐ - sys.stdin.readline ์ฌ์ฉ
โก ์ ๋ ฅ๋๋ ์์ ํฌ๊ธฐ๊ฐ 10,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค → ์ด 10,000๊ฐ์ ์์๊ฐ ๋ด๊ธด ์์ฐ์๋ณ count list๋ฅผ ์ฌ์ฉ → ์๊ฐ ์ ๋ ฅ๋ ์๋ก count list element 1์ฉ ์ฆ๊ฐ
โข count list๋ฅผ traverseํ๋ฉด์ 0์ด ์๋ element๊ฐ ์๋ค๋ฉด ์ญ ์ถ๋ ฅ
โป ์ ๋ ฅ๋๋ ๋ชจ๋ ์์ ํฌ๊ธฐ๊ฐ 10,000 ์ดํ์ธ ํน์์ฑ์ ๊ฐ์ํด count list๋ฅผ ๋ฐ๋ก ๋ง๋ค์๋ค๋ ์ ์ด ํฌ์ธํธ! โป
โป ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ ๊ด๋ จ map() โป
## code 1
import time
start_time = time.time()
a = list(range(100000))
a2 = list()
for i in a:
a2.append(i*2)
end_time = time.time()
fin = end_time - start_time
print(fin)
#res 0.04319477081298828
#-------------------------------
## code 2
import time
start_time = time.time()
temp = [x*2 for x in range(100000)]
end_time = time.time()
fin = end_time - start_time
print(fin)
#res 0.01129007339477539
#-------------------------------
## code 3
import time
start_time = time.time()
a = list(range(100000))
a2 = map(lambda n: n*2, a)
end_time = time.time()
fin = end_time - start_time
print(fin)
#res 0.0034818649291992188
โถ์ฃผ์ด์ง list์ ๋ชจ๋ ์์๋ฅผ ์ ๊ณฑํ๋ ๋ฌธ์ โ
โ ๋ ๋ค๋ฅธ list๋ฅผ ๋ง๋ค์ด for๋ฌธ ๋๋ฆผ
โซ list๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด ์ฌํ ๋นํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฐจ์์์ ๋นํจ์จ์
โก list comprehension ์ฌ์ฉ
โซ comprehension ๊ธฐ๋ฒ์ด๋ฉด ์ข ๋ ๋น ๋ฅด๋ค
โข map() ์ฌ์ฉ
โซ map()์ ์ฌ์ฉํ๋ฉด ๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌํ ๋น ์์ด ๊ทธ ์๋ฆฌ์์ ํ๋ฒ์ ๋ชจ๋ ์์ ๊ฐ๊ฐ ์ ๊ณฑ์ผ๋ก ๋ฐ๊ฟ์ค๋ค. ์ถ์ฒ!
* ๋ด์ฉ ์ถ์ฒ) https://wikidocs.net/21057
โ 2750 ์ ์ ๋ ฌํ๊ธฐ โ
import sys
input=sys.stdin.readline
N = int(input())
l=[]
for _ in range(N):
l.append(int(input()))
l.sort()
print(*l,sep='\n')
๐ฏโ๏ธ ๋จ์ sort() ํจ์
โ 25305 ์ปคํธ๋ผ์ธ โ
import sys
input = sys.stdin.readline
N,k = map(int,input().split())
scores=list(map(int,input().split()))
scores.sort(reverse=True)
print(scores[k-1])
๐ฏโ๏ธ ์ ๋ ฌ์ ํ ๋ค ์ปคํธ๋ผ์ธ์ ์ ์๋ฅผ indexing์ผ๋ก ์ถ๋ ฅ๋ง ํ๋ฉด ๋จ
โ 23881 ์๊ณ ๋ฆฌ์ฆ ์์ - ์ ํ ์ ๋ ฌ 1 โ
import sys
input = sys.stdin.readline
N,K=map(int,input().split())
arr = list(map(int,input().split()))
swapped = False
for i in range(N-1,0,-1):
subarray_max = max(arr[:i])
if subarray_max > arr[i]:
subarray_max_index = arr.index(subarray_max)
arr[i],arr[subarray_max_index] = arr[subarray_max_index],arr[i]
K-=1
if K== 0:
swapped = True
print(arr[subarray_max_index],arr[i])
break
if not swapped: print(-1)
๐ฏโ๏ธ ์ ํ ์ ๋ ฌ์ ์งํํ๋ ๋ฌธ์ ์ ํ! ์ด๋ก ํฌ์คํ ์์ ๋ค๋ฃฌ ์์๋ ์์์๋ถํฐ ๊ตฌํด min_index๋ฅผ ๊ตฌํด์ ์๋ก ๋ฐ๊พธ๋ ๊ฒฝ์ฐ๋ฅผ ์งํํ๋ค. ํ์ง๋ง ์ ๋ฌธ์ ๋ ๊ฑฐ๊พธ๋ก ์ค๋ฅธ์ชฝ๋ถํฐ max_index๋ฅผ ๊ตฌํด์ ์๋ก ๋ฐ๊พธ๋ ์๊ณ ๋ฆฌ์ฆ → max_index, ์ฆ index์ ์ด๋์ผ๋ก ์ ์๋๋ก ์ผ์ผ์ด ํ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ค for๋ฌธ์ผ๋ก ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํด ์ฌ์ด ๋ด์ฅํจ์ max()๋ก subarray์ max๊ฐ์ ๋ฐ๋ก ๊ตฌํ๊ณ , ๋ง์ฝ ํ์ฌ i์ ์์น element๋ณด๋ค ํฐ ์ง ํ์ธ ๋ค, max๊ฐ์ index๋ฅผ ๊ตฌํ๊ณ ๋ฐ๋ก swap
โ 23882 ์๊ณ ๋ฆฌ์ฆ ์์ - ์ ํ ์ ๋ ฌ 2 โ
import sys
input = sys.stdin.readline
N,K=map(int,input().split())
arr = list(map(int,input().split()))
swapped = False
for i in range(N-1,0,-1):
subarray_max = max(arr[:i])
if subarray_max > arr[i]:
subarray_max_index = arr.index(subarray_max)
arr[i],arr[subarray_max_index] = arr[subarray_max_index],arr[i]
K-=1
if K== 0:
swapped = True
print(*arr)
break
if not swapped: print(-1)
๐ฏโ๏ธ swap ํ์ ๋์ ๋ swap๋๋ ์์ ์ถ๋ ฅ์ด ์๋, swap ์งํ์ array ์ถ๋ ฅ!
โ 23899 ์๊ณ ๋ฆฌ์ฆ ์์ - ์ ํ ์ ๋ ฌ 5 โ
import sys
input=sys.stdin.readline
N=int(input())
A=list(map(int,input().split()))
B=list(map(int,input().split()))
flag=False
if A==B: flag = True
else:
for i in range(N-1,0,-1):
cur_max = max(A[:i+1])
if A[i] != cur_max:
cur_max_index = A.index(cur_max)
A[i],A[cur_max_index] = A[cur_max_index],A[i]
if A==B:
flag = True
break
print(1 if flag else 0)
๐ฏโ๏ธ ์ ๋ฌธ์ ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋๊ฐ๊ณ , ๋์ค์ ๋ฐฐ์ด์ด B ๋ฐฐ์ด๊ณผ ๊ฐ์ ์ง์ ์ฌ๋ถ ์ถ๋ ฅ. ๋ ์์ ์ ํฌํจํ subarray์์ ์ต๋๊ฐ์ ๊ตฌํ๊ณ , ๋ ์์ ๊ณผ ์ต๋๊ฐ์ด ๋ค๋ฅด๋ค๋ฉด swap ์งํ. swap ์งํ์ ๊ธฐ์ค์ด ์ฝ๊ฐ ๋ค๋ฅด๋ค๋ ์ ๋ง ๊ณ ๋ คํ๋ฉด OK
โ 24051 ์๊ณ ๋ฆฌ์ฆ ์์ - ์ฝ์ ์ ๋ ฌ 1 โ
import sys
input=sys.stdin.readline
N,K=map(int,input().split())
A=list(map(int,input().split()))
ans = False
for i in range(1,N):
loc = i-1
newItem = A[i]
while(0<=loc and newItem < A[loc]):
A[loc+1] = A[loc]
K-=1
if K==0:
print(A[loc+1])
ans=True
break
loc-=1
if ans: break
if (loc+1 != i):
A[loc+1] = newItem
K-=1
if K==0:
ans=True
print(newItem)
break
if not ans: print(-1)
๐ฏโ๏ธ insertion sort ํฌ์คํ ์์ ์๊ฐํ algo 2 ์ ํ. swap ์์ด subarray ์ผ๋ถ๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ๊ณ ํ ๋ฒ์ newItem์ ๋ฐ๊ณ ๋ ๋น ์๋ฆฌ์ ํ ๋นํ๋ ๋ฐฉ์ / ์ ์ฅ์ ์ค๋ฅธ์ชฝ์ผ๋ก 1๋ฒ์ฉ ๋ฐ ๋ / newItem์ ๋น ์๋ฆฌ์ ๋ฃ์ ๋ ์ด๋ ๊ฒ ๋ ์ข ๋ฅ์ ์ ์ฅ์ด ์งํ๋๊ณ , K=0์ด๋ฉด ๋ฐ๋ก ์ถ๋ ฅํ๊ณ break / ans Flag ๋ณ์ ๋ง๋ค์ด์ ans ๊ฐ์ด True์ด๋ฉด -1 ์ถ๋ ฅ
โ 24052 ์๊ณ ๋ฆฌ์ฆ ์์ - ์ฝ์ ์ ๋ ฌ 2 โ
import sys
input=sys.stdin.readline
N,K=map(int,input().split())
A=list(map(int,input().split()))
ans = False
for i in range(1,N):
loc = i-1
newItem = A[i]
while(0<=loc and newItem < A[loc]):
A[loc+1] = A[loc]
K-=1
if K==0:
print(*A)
ans=True
break
loc-=1
if ans: break
if (loc+1 != i):
A[loc+1] = newItem
K-=1
if K==0:
ans=True
print(*A)
break
if not ans: print(-1)
๐ฏโ๏ธ ๋ณ๊ฒฝ ์งํ์ array ๋ด์ฉ ์ถ๋ ฅ! ์ 24051๊ณผ ์์ ๋์ผ
'BOJ > ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Greedy Upper-Beginner I - 9 Solvedโ (0) | 2022.12.02 |
---|---|
โ Math Beginner III - 30 Solvedโ (1) | 2022.11.18 |
โ Implementation&Simulation Upper-Beginner I - 25 Solvedโ (0) | 2022.11.03 |
โ Implementation Beginner III - 40 Solvedโ (0) | 2022.10.28 |
โ Basics III - 40 Solvedโ (0) | 2022.10.21 |
๋๊ธ