Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
x=int(input())
d=[0]*(x+1)

d[2]=d[1]+1
d[3]=d[1]+1

for i in range(2,x+1):
#이전 값에서 +1 한 경우
d[i]=d[i-1]+1
#나누어 떨어지는 경우의 +1 or 중에 작은 값
if i%5==0:
d[i]=min(d[i],d[i//5]+1)
if i%3==0:
d[i]=min(d[i],d[i//3]+1)
if i%2==0:
d[i]=min(d[i],d[i//2]+1)

print(d[x])

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
n=int(input())
food=list(map(int,input().split()))
d=[0]*(n)
d[0]=food[0]
d[1]=max(food[0],food[1])
for i in range(2,n):
#직전거를 안먹고 현재먹기 or 현재를 포기하고 직전거를 선택하기
d[i]=max(d[i-2]+food[i],d[i-1])
print(d[n-1])
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
n=int(input())
d=[0]*(n+1)
d[1]=1
d[2]=3
for i in range(3,n+1):
#이전것에 2*1 하나 더하기 + 전전것에 2*2 랑 1*2 두개 더한것
d[i]=(d[i-1]+2*d[i-2])%796796

print(d[n])
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
def binarySearch(start,end,arr):

while start<=end:
mid=(start+end)//2
#고정점 찾으면 출력
if arr[mid]==mid:
return mid
#배열이 오름차순으로 정렬되어있으므로 arr[mid]의 값이 mid보다 크면 고정점은 왼쪽에 있는거임
elif arr[mid]>mid:
end=mid-1
else:
start=mid+1
return -1

n=int(input())
arr=list(map(int,input().split()))
print(binarySearch(0,n-1,arr))


Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
n,c=map(int,input().split())
house=[]
for _ in range(n):
house.append(int(input()))
house.sort()


#공유기 설치간격을 이분탐색으로 찾기
start=1
end=house[n-1]-house[0]
res=0

while start<=end:
mid=(start+end)//2
cur=house[0]
cnt=1
for i in range(1,n):
if house[i]>=cur+mid:
cur=house[i]
cnt+=1
#공유기 설치한 개수가 c이상이면 설치간격을 더 넓혀도 됨
if cnt>=c:
start=mid+1
res=mid
#설치간격 더 좁히기
else:
end=mid-1
print(res)
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
def binary_search(x,arr):
global cnt
start,end=0,n-1

while start<=end:
mid=(start+end)//2

if arr[mid]==x:
cnt+=1
#왼쪽으로 오른쪽으로 x가 있는지 탐색하기
searchLeft(x,arr,mid)
searchRight(x,arr,mid)
return
if arr[mid]>x:
end=mid-1
else:
start=mid+1

def searchLeft(x,arr,idx):
global cnt
for i in range(idx-1,-1,-1):
if arr[i]==x:
cnt+=1
else:
return
def searchRight(x,arr,idx):
global cnt
for i in range(idx+1,n-1):
if arr[i]==x:
cnt+=1
else:
return
n,x=map(int,input().split())
arr=list(map(int,input().split()))
cnt=0

binary_search(x,arr)
if cnt==0:
cnt=-1
print(cnt)