베를린 3일차!
민보형 덕분에 3일이 아니고 3주 째 여기 있는 것 같다..
날마다 재밌게 보내는 중 ~
코테 문제는 확실히 난이도가 올라간 느낌
3일차인데 벌써 적응다 된 집앞 풍경 한국에서 못 보는 건축구조 덕분인지 여행 온 기분이 난다
치킨 케밥, durum doner라는 것도 먹어봤는데 개인적으로 빵이 더 바삭한 것은 케밥인듯 어쨌든 엄청 맛있었다. 베를린에 케밥이 유명하다고 합니다 ~.~
독일은 12/31만 폭죽을 허용한다고 하는데 그래서인지 진짜 말도안되게 다들 터뜨리고 있다. 한국 폭죽보다 훨씬 시끄럽고 아무 곳에서나 다 터뜨리고 있어서 위험하긴 한데 뭐.. 연말이라고 다들 봐주는 느낌
새해를 해외에서 경험하는게 처음인데 아주 좋은 추억을 쌓았다!
def solution(numbers):
answer = []
for num in numbers:
binary = list('0' + bin(num)[2:])
idx = ''.join(binary).rfind('0')
binary[idx] = '1'
if num % 2 == 1:
binary[idx+1] = '0'
answer.append(int(''.join(binary), 2))
return answer
< 풀이 과정 >
문제 해석하는데 여러 숫자를 예시로 생각을 많이 해 본 문제.
numbers 리스트 내 숫자가 홀수인 경우와 짝수인 경우로 나누어서 볼 수 있다.
최종적으로 answer에 binary 형태의 문자열을 2진 변환하여 리턴
def solution(n):
dp = [0 for _ in range(n)]
for i in range(n):
if i == 0:
dp[i] = 1
if i == 1:
dp[i] = 2
if i >= 2:
dp[i] = (dp[i-1] + dp[i-2]) % 1000000007
return dp[n-1]
< 풀이 과정 >
n이 1~4인 case를 직접 그려보니 피보나치 수열을 따르는 형태임을 파악해 재귀함수를 이용하여 구현하였다.
dp라는 n길이의 0으로 꽉찬 리스트를 만들어주고 for 문을 n만큼 돌면서 가로 길이가 1인 경우 1, 길이가 2인 경우 2를 만들어주고 else인 케이스는 재귀를 돌려준다.
이때 1,000,000,007만큼 나눠주는 이유는 세로 길이가 지정되어 있지 않기에 무한대로 직사각형을 붙일 수 있기 때문이다.
def solution(bridge_length, weight, truck_weights):
answer = 0
bridge = [0 for _ in range(bridge_length)]
while bridge:
answer += 1
bridge.pop(0)
if truck_weights:
if sum(bridge) + truck_weights[0] <= weight:
w = truck_weights.pop(0)
bridge.append(w)
else:
bridge.append(0)
return answer
< 풀이 과정 >
bridge 길이를 1만큼 건널 때 1초가 소요된다.
마지막 입출력 예시를 보면, input으로 100 100,[10,10,10,10,10,10,10,10,10,10] 이렇게 받는데, 차 한대가 다리를 건너는데 걸리는 시간은 100초이고 제일 마지막 차량이 지나가는데 10초가 더 소요되므로 총 110초가 걸리게 된다.