레벨 2
def solution(n):
answer = ''
for i in range(n):
if i % 2 == 0:
answer += '수'
else:
answer += '박'
return answer
def solution(n):
return ('수박'*n) [:n]
이때, a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
def solution(a, b):
return sum([x*y for x, y in zip(a,b)])
def solution(a, b):
answer = 0
for i in range(len(a)):
answer += a[i]*b[i]
return answer
def solution(left, right):
answer = 0
for i in range(left,right+1):
now_count = 0; #약수의 수를 담을 변수
for j in range(1, i+1):
if i % j == 0: #약수의 조건
now_count += 1; #약수이면 숫자가 하나씩 증가
if now_count % 2 == 0: #약수의 수가 짝수이면
answer += i #약수를 더해줌.
else :
answer -= i
return answer
def solution(s):
return (''.join(sorted(s)[::-1]))
제한사항
놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수
def solution(price, money, count):
for i in range(1,count+1):
money -= price*i
if money < 0:
money = abs(money)
else:
momey = 0
return money
제한 사항
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
def solution(s):
if 4 <= len(s) <= 6:
try:
int(s)
return True
except:
return False
else:
return True
def solution(arr1, arr2):
answer = []
for i in range(len(arr1)):
sum = []
for j in range(len(arr1[0])):
sum.append(arr1[i][j]+arr2[i][j])
answer.append(sum)
return answer

행렬의 덧셈은 같은 크기의 행렬끼리만 더할 수 있다.
그리고 덧셈의 결과는 같은 자리에 위치한 요소끼리 더한 값이다.
즉, 두 행렬에서 같은 자리에 위치한 값을 찾아 더해주면 된다.
파이썬에서 2차원 배열은 [행][열]로 표현한다. 행이 먼저이고, 그다음이 열이기 때문에 행부터 접근하게 된다.
그러므로, 첫 번째 for문이 행을, 두 번째 for문이 열을 의미한다.
->첫 번째 for문에서는 행을 탐색해야 하므로 len(arr1)만큼 반복, 열의 개수는 0행의 길이를 구하면 된다. 그래서 len(arr[0])만큼 두 번째 for문을 반복한다.
a, b = map(int, input().strip().split(' '))
answer = ('*'*a + '\n')*b
print(answer)
def solution(n, m):
# 최대 공약수 구하기
for i in range(min(n, m), 0, -1):
if (n % i == 0) and (m % i == 0):
a = i
break
# 최소 공배수 구하기
for j in range(max(n, m), (n * m) + 1):
if j % n == 0 and j % m == 0:
b = j
break
return [a, b]
def solution(n, m):
gcd = lambda a,b : b if not a%b else gcd(b, a%b)
lcm = lambda a,b : a*b//gcd(a,b)
return [gcd(n, m), lcm(n, m)]
def solution(n):
answer = ''
while (n >= 1):
rest = n % 3
n = n // 3
answer += str(rest) #n 을 나누고 나머지를 answer에 순서대로 넣음
return int(answer,3)
n진수 → 10진수
int(string, base)
print(int('101',2))
print(int('202',3))
print(int('303',4))
print(int('404',5))
print(int('505',6))
print(int('ACF',16))
20
51
104
185
2767
10진수 → 2, 8, 16진수
:2, 8, 16진수는 bin(), oct(), hex() 함수를 지원
print(bin(11))
print(oct(11))
print(hex(11))
0b1011
0o13
0xb
;0b는 2진수, 0o는 8진수, 0x는 16진수를 의미. 진법 표시를 지울려면 [2:]를 하면 된다.
print(bin(11)[2:])
print(oct(11)[2:])
print(hex(11)[2:])
1011
13
b
10진수 → n진수
def solution(n, q):
rev_base = ''
while n > 0:
n, mod = divmod(n, q)
rev_base += str(mod)
return rev_base[::-1]
# 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력
print(solution(45, 3))
1200
인사이트