개인적으로 이스트 사이드 갤러리 뒤쪽 강가가 더 분위기있고 예뻤다
강가를 따라 알렉산더까지 산책하다가 베를린 중앙 도서관 도착
사람이 이렇게 많은데 아무도 기침도 안하고 상당히 조용했다. 스터디카페 온 느낌
길가다가 닥스를 봤는데 준태가 더 나은 것 같다 ㅎ.ㅎ
def solution(n):
answer = ''
while n:
if n % 3 == 1:
answer += str(n%3)
n //= 3
elif n % 3 == 2:
answer += str(n%3)
n //= 3
else:
answer += '4'
n = n // 3 - 1
return answer[::-1]
< 풀이 과정 >
1부터 21까지 진행을 해보니, 3진법과 유사한 규칙을 발견했다.
규칙1. 3으로 나눈 나머지가 1이면 일의 자리가 1, 2이면 2, 0이면 4이다.
규칙2. 3번 회차를 돌때 마다 일의 자리가 124로 반복되고 자리수가 추가되거나 다음 숫자로 넘어간다.
def solution(number, k):
answer = []
for num in number:
if not answer:
answer.append(num)
continue
if k > 0:
while answer[-1] < num:
answer.pop()
k -= 1
if not answer or k <= 0:
break
answer.append(num)
if k > 0:
answer = answer[:-k]
else:
answer
return ''.join(answer)
< 풀이 과정 >
numbers 숫자에서 k개를 제거한 숫자들의 조합으로 가장 큰 수를 뽑아내는 문제.
def solution(n):
answer = []
triangle = [[0]*n for _ in range(n)]
x, y = -1, 0
num = 1
for i in range(n):
for j in range(i, n):
if i % 3 == 0:
x += 1
elif i % 3 == 1:
y += 1
elif i % 3 == 2:
x -= 1
y -= 1
triangle[x][y] = num
num += 1
for i in triangle:
for j in i:
if j:
answer.append(j)
return answer
< 풀이 과정 >
삼각형의 문제를 행렬로 접근하여 처리하는 방법
삼각형 > 사각형 전환 시 반복문을 통해
3으로 나눈 나머지가 0이면, 아래 칸으로 이동 x += 1
3으로 나눈 나머지가 1이면, 오른쪽으로 이동이므로 y += 1
3으로 나눈 나머지가 2이면, 왼쪽 대각선으로 이동해야 하므로 x,y 둘다 -1
최종적으로 구성된 triangle에서 0을 제외하기 위해 if j: 문을 거쳐 answer에 추가하여 리턴
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for c in course:
menu_list = []
for order in orders:
order = sorted(order)
menu_list.extend(list(combinations(order, c)))
cnt = Counter(menu_list)
if cnt:
if max(cnt.values()) >= 2:
for k, v in cnt.items():
if v == max(cnt.values()):
answer.append(''.join(k))
return sorted(answer)
< 풀이 과정 >
문제를 보고 순열 조합을 이용해 dic으로 저장하는 Counter를 써서 개수가 큰 메뉴들만 뽑는 방법을 선택했다.