[ALGORITHM] Programmers ALGORITHM 연습문제 Lv1 (3)
ALGORITHM Übung - Programmers
- 알고리즘 문제 풀이를 통한 코딩 테스트 연습
서울에서 김서방 찾기
- 24/10/2021
def solution(seoul):
for i in range(len(seoul)):
if seoul[i] == "Kim":
return "김서방은 "+ str(i)+"에 있다"
# 다른 사람의 좋은 풀이
def solution(seoul):
return "김서방은 {}에 있다".format(seoul.index("Kim"))
문자열 다루기 기본
- 24/10/2021
if len(s) == 4 or len(s) == 6:
if s.isnumeric():
return True
return False
# 다른 사람의 좋은 풀이
def solution(s):
return s.isdigit() and len(s) in (4, 6)
문자열 내림차순으로 배치하기
- 24/10/2021
# 다른 사람의 좋은 풀이
def solution(s):
return ''.join(sorted(s, reverse=True))
문자열 내 p와 y의 개수
- 25/10/2021
def solution(s):
num_p = 0
num_y = 0
for i in s.lower():
if i == 'p':
num_p += 1
elif i == 'y':
num_y += 1
if num_p == num_y:
return True
return False
# 다른 사람의 좋은 풀이
def solution(s):
return s.lower().count('p') == s.lower().count('y')
문자열 내 마음대로 정렬하기
- 26/10/2021
def solution(strings, n):
return sorted(strings, key=lambda x:(x[n],x))
두 정수 사이의 합
- 26/10/2021
def solution(a, b):
return sum([i for i in range(min(a,b),max(a,b)+1)])
# 다른 사람의 좋은 풀이
def solution(a, b):
return sum(range(min(a,b),max(a,b)+1))
나누어 떨어지는 숫자 배열
- 27/10/2021
def solution(arr, divisor):
res = sorted([i for i in arr if i % divisor == 0])
return res if len(res) > 0 else [-1]
같은 숫자는 싫어
- 27/10/2021
def solution(arr):
res = [arr[0]]
for i in range(len(arr)):
if arr[i] != res[-1]:
res.append(arr[i])
return res
가운데 글자 가져오기
- 29/10/2021
def solution(s):
return s[len(s)//2] if len(s) % 2 == 1 else s[(len(s)//2)-1] + s[len(s)//2]
# 다른 사람의 좋은 풀이
def solution(s):
return str[(len(str) - 1) // 2:len(str) // 2 + 1]
[1차] 다트 게임
- 29/10/2021
import re
p = re.compile("[0-9]+\D*")
int_p = re.compile("[0-9]+")
def solution(dartResult):
s = p.findall(dartResult)
int_s = int_p.findall(dartResult)
result_num = []
for i in range(3):
if "S" in s[i]:
if "#" in s[i]:
result_num.append(int(int_s[i]) ** 1 * -1)
else:
result_num.append(int(int_s[i]) ** 1)
elif "D" in s[i]:
if "#" in s[i]:
result_num.append(int(int_s[i]) ** 2 * -1)
else:
result_num.append(int(int_s[i]) ** 2)
else:
if "#" in s[i]:
result_num.append(int(int_s[i]) ** 3 * -1)
else:
result_num.append(int(int_s[i]) ** 3)
if "*" in s[0]:
result_num[0] = result_num[0] * 2
if "*" in s[1]:
result_num[1] = result_num[1] * 2
result_num[0] = result_num[0] * 2
if "*" in s[2]:
result_num[2] = result_num[2] * 2
result_num[1] = result_num[1] * 2
return sum(result_num)
# 다른 사람의 좋은 풀이
import re
def solution(dartResult):
bonus = {'S' : 1, 'D' : 2, 'T' : 3}
option = {'' : 1, '*' : 2, '#' : -1}
p = re.compile('(\d+)([SDT])([*#]?)')
dart = p.findall(dartResult)
for i in range(len(dart)):
if dart[i][2] == '*' and i > 0:
dart[i-1] *= 2
dart[i] = int(dart[i][0]) ** bonus[dart[i][1]] * option[dart[i][2]]
return sum(dart)