정답율은 85% 아래지만 아직은 간단한 프로그래머스 문제들 모음💻
def solution(a, b):
answer = 0
# a와 b의 대소관계는 정해져있지 않습니다.
if a > b:
a, b = b, a
for i in range(a, b+1):
answer += i
return answer
def adder(a, b):
return (abs(a-b)+1)*(a+b)//2
절댓값이라는게 있단다 슬기야
이러면 바로 시간복잡도 O(1)
ㅋㅋㅋㅋㅋㅋㅋ 내 코드는 O(N)
이다.
def adder(a, b):
return sum(range(min(a,b),max(a,b)+1))
아니면 min
, max
를 이용해주면 된다!
def solution(num):
answer = 0
cnt = 0
while True:
if cnt > 500:
break
if num == 1:
break
# 1-1
if num % 2 == 0:
num /= 2
cnt += 1
# 1-2
else:
num = num*3 + 1
cnt += 1
if cnt > 500:
return -1
else:
return cnt
순서대로 조건문 작성해주면 끝
def solution(n):
answer = 0
arr = []
for i in range(1, n+1):
if n % i == 1:
arr.append(i)
answer = min(arr)
return answer
나처럼 최솟값을 찾아주거나 걍 0번째 인덱스를 출력하면 된다.
def solution(seoul):
answer = ''
kim_num = 0
for i in range(len(seoul)):
if seoul[i] == 'Kim':
kim_num = i
answer = '김서방은 {}에 있다'.format(kim_num)
return answer
def findKim(seoul):
return "김서방은 {}에 있다".format(seoul.index('Kim'))
index
란게 있단다 슬기야...
def solution(phone_number):
answer = ''
# 전화번호 뒷자리를 제외한 나머지 문자 전부
for i in range(len(phone_number) - 4):
answer += '*'
answer = answer + phone_number[-4:]
return answer
처음에 replcae
를 사용하려다가.. 실패했다. 근데 생각해보니 replace
못쓴다.
그래서 그냥 길이에서 4개빼고 앞에 *
붙여주고 뒤에 나머지 4자리를 붙여주는 식으로 코드를 짰다.
def hide_numbers(s):
return '*' * (len(s) - 4) + s[-4:]
문자열은 사칙연산이 가능하다.
import re
def hide_numbers(s):
p = re.compile(r'\d(?=\d{4})')
return p.sub("*", s, count = 0)
정규식....
def solution(arr, divisor):
answer = []
for ar in arr:
if ar % divisor == 0:
answer.append(ar)
if answer == []:
answer.append(-1)
answer.sort()
return answer
def solution(arr, divisor):
return sorted([n for n in arr if n%divisor == 0]) or [-1]
이런 한줄 풀이 보면 황당하기만 하다..
or
쓰는 법 또 배워가욧~
def solution(arr):
if len(arr) > 1:
arr.remove(min(arr))
return arr
else:
return [-1]
def rm_small(mylist):
return [i for i in mylist if i > min(mylist)]
List Comprehension
을 이용해준 것. 최솟값 이상인 것들만 반환해준다.
이게 최적의 풀이인듯 하다. 내 풀이 같은 경우 만약 [3, 2, 1, 1, 1]
이럴경우 하나만 지워주니까..
def solution(absolutes, signs):
for i in range(len(absolutes)):
if signs [i] == False:
absolutes[i] = -absolutes[i]
answer = sum(absolutes)
return answer
def solution(absolutes, signs):
return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))
이렇게 한줄로 나타낼 수도 있다.
def solution(s):
if len(s) % 2 == 0:
return s[int(len(s)/2-1) : int(len(s)/2+1)]
else:
return s[int(len(s)/2)]