프로그래머스 LV1(3)
2024. 1. 26. 02:52ㆍ백준 및 프로그래머스/프로그래머스 LV 1
- 월간 코드 챌린지 시즌 1
def solution(a, b):
answer = 0
for i in range(len(a)):
answer += a[i] *b[i]
return answer
-가운데 글자 가져오기
def solution(s):
answer = ''
if len(s) % 2 == 1:
answer+= s[len(s)//2]
else:
answer+=s[len(s)//2 -1] +s [len(s)//2]
return answer
-수박수박수박수박수박수?
def solution(n):
answer = ''
for i in range(n):
if i % 2 == 0:
answer+="수"
else:
answer+='박'
return answer
-약수의 개수와 덧셈
def solution(left, right):
answer = 0
for i in range(left,right+1):
cnt = 0
for j in range(1,i+1):
if i % j == 0:
cnt+=1
if cnt % 2 == 0:
answer+=i
else:
answer-=i
return answer
-문자열 내림차순으로 정렬하기
def solution(s):
answer = ''
word = []
for i in s:
word.append(i)
word.sort(reverse=True)
return ''.join(word)
-부족한 금액 계산하기
def solution(price, money, count):
answer = 0
coin = 0
for i in range(1,count+1):
coin+=price * i
answer = coin - money
if answer>=0:
return answer
else:
return 0
-문자열 다루기 기본
def solution(s):
answer = True
num_count = 0
str_count = 0
for i in s:
if i.isdigit():
num_count +=1
if (len(s) == 4 and num_count == 4) or (len(s) == 6 and num_count == 6):
return answer
else:
return False
-행렬의 덧셈
def solution(arr1, arr2):
answer = []
for i,j in zip(arr1,arr2):
num = []
for a,b in zip(i,j):
num.append(a+b)
answer.append(num)
return answer
-zip함수를 이용하면 쉽게 풀 수 있음!
-직사각형 별 찍기
a,b = map(int,input().split())
for i in range(b):
print("*"*a)
-같은 숫자는 싫어
def solution(arr):
answer = [arr[0]]
for i in range(len(arr)-1):
if arr[i]!=arr[i+1]:
answer.append(arr[i+1])
return answer
-3진법 뒤집기
def solution(n):
answer = ""
while n > 0:
answer+=str(n%3)
n = n // 3
return int(answer,3)
-예산
def solution(d, budget):
answer = 0
d.sort()
count = 0
for i in range(len(d)):
budget = budget - d[i]
if budget<0:
break
count+=1
return count
-이상한 문자 만들기
def solution(s):
answer = ''
tal = s.split(" ")
for i in range(len(tal)):
word = len(tal[i])
for j in range(word):
if j % 2 == 0:
answer+=tal[i][j].upper()
else:
answer+=tal[i][j].lower()
if len(tal) -1 != i:
answer+=" "
return answer
-더 좋은 풀이가 있을 거라 생각합니다.!
-크기가 작은 부분 문자열
def solution(t, p):
answer = 0
p_num = len(p)
for i in range(len(t)-p_num+1):
tal = t[i:i+p_num]
if int(tal) <= int(p):
answer+=1
return answer
-삼총사
def solution(number):
count = 0
n = len(number)
for i in range(n):
for j in range(i+1,n):
for k in range(j+1,n):
if number[i] + number[j] + number[k] == 0:
count+=1
return count
-최소 직사각형
def solution(sizes):
answer = 0
tri = []
for x, y in sizes:
if x < y:
tri.append((y,x))
else:
tri.append((x,y))
max_x = 0
max_y = 0
for i in range(len(tri)):
max_x = max(max_x,tri[i][0])
max_y = max(max_y,tri[i][1])
return max_x * max_y
-가장 가까운 같은 글자
def solution(s):
answer = []
word = []
for i in range(len(s)):
if s[i] not in word:
answer.append(-1)
word.append(s[i])
else:
for k in range(len(word)-1,-1,-1):
if word[k] == s[i]:
answer.append(i-k)
break
word.append(s[i])
return answer
(이렇게 푸는게 맞는 지 모르겠지만.. 더 좋은 풀이가 있을 거라 생각합니다!)
-숫자 문자열과 영단어
def solution(s):
answer = 0
number = {"zero":0,"one":1,"two":2,"three":3,"four":4,"five":5,"six":6,"seven":7,"eight":8,"nine":9}
for i in number:
s = s.replace(i,str(number[i]))
return int(s)
-시저암호
def solution(s, n):
answer = ''
s = list(s)
for i in range(len(s)):
if s[i].islower():
s[i] = chr((ord(s[i])-ord("a")+n) % 26 +ord("a"))
elif s[i].isupper():
s[i] = chr((ord(s[i])-ord("A")+n) % 26 +ord("A"))
return ''.join(s)
(아스키 코드로 풀면 쉽게 풀리는 문제)
'백준 및 프로그래머스 > 프로그래머스 LV 1' 카테고리의 다른 글
| 프로그래머스 LV 1 (0) | 2024.01.28 |
|---|---|
| 프로그래머스 LV 1(5) (0) | 2024.01.26 |
| 프로그래머스 LV1(4) (0) | 2024.01.26 |
| 프로그래머스 LV 1(2) (0) | 2024.01.25 |
| 프로그래머스 1LV (1) (0) | 2024.01.25 |