
프로그래머스 문제 풀이
# Level1 #Python3
문제 설명
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각
SUN,MON,TUE,WED,THU,FRI,SAT
입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.
제한 조건
# mine
def solution(a, b):
week = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"]
day = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
total = 0
for i in range(a-1):
total += day[i]
result = (total+b)%7
answer = week[result-1]
return answer
print(solution(5, 24))
# someone else's
def getDayName(a,b):
months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
days = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']
return days[(sum(months[:a-1])+b-1)%7]
return days[(sum(months[:a-1])+b-1)%7]
문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
제한사항
# mine
def solution(s):
if len(s) % 2 == 0:
num = len(s) // 2
result = s[num-1]+s[num]
else:
num = len(s) // 2
result = s[num]
return result
print(solution("abcde"))
# someone else's
def string_middle(str):
return str[(len(str)-1)//2:len(str)//2+1]
return str[(len(str)-1)//2:len(str)//2+1]
문제 설명
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
제한사항
# mine
def solution(arr):
list = []
for i in range(len(arr)):
if i == 0:
list.append(arr[i])
elif arr[i] != arr[i-1]:
list.append(arr[i])
return list
arr = [4,4,4,3,3]
print(solution(arr))
# someone else's 1
def no_continuous(s):
a = []
for i in s:
if a[-1:] == [i]: continue
a.append(i)
return a
# someone else's 2
def no_continuous(s):
result = []
for c in s:
if (len(result) == 0) or (result[-1] != c):
result.append(c)
return result
if a[-1:] == [i]: continue a.append(i)if (len(result) == 0) or (result[-1] != c): result.append(c)