[Programmers] - 2016년

오동훈·2021년 3월 12일
0

Programmers

목록 보기
4/64
post-thumbnail

1. Problem 📃

https://programmers.co.kr/learn/courses/30/lessons/12901

다음 문제는 x월 x일이 입력 되었을때, 무슨 요일인지 구하는 함수를 만드는 것입니다.

2. Logic 👨‍🏫

  1. 2016년 1월 1일이 금요일입니다. 인덱스를 고려해 목 ~ 수요일로 리스트를 생성해줍니다.
  2. 1월부터 12월까지 그 달의 날수를 리스트로 만들어줍니다.
  3. sum함수와 slicing을 이용해 요일을 반환해주면 끝입니다!

3. Code 💻

def solution(a, b):
    answer = ["THU","FRI","SAT","SUN","MON","TUE","WED"]
    month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    return (answer[(sum(month[:a-1]) + b) % 7])

4. Feedback 📚

  • 처음 이 문제를 접했을때, 기존에 주로 C언어로 많이 풀어본 경험이 있어 반복문과 if else 문을 이용해 날짜를 더해나가고, 나머지 부분은 위의 코드와 비슷했습니다.
    다만 코드 길이 차이가 많이 차이나기도 했고, 로직이 부족한 부분이 많아 위의 코드로 수정했습니다. 그 과정속에서 알아간것들을 정리해보겠습니다.

    4.1 Sum function

    Sum Prototypesum(iterable)
    RETURN인자로 들어온 iterable 내부 모든 요소의 합

    iterable한 자료형을 받으며 numeric 해야합니다. 즉, 리스트나 튜플 처럼 인덱스 순환 접근이 가능한 자료형이고 내부에 숫자로만 이루어져 있어야합니다. 여기서 숫자는 정수, 실수 둘다 가능합니다.

    Sum Prototypesum(iterable, start = 0)
    RETURNiterable의 합 + start 값

    첫번째 인자 : iterable하고 숫자데이터가 들어간 객체, 변수
    두번째 인자 : 처음으로 또 더해줄 숫자

# ========================================================== # 
# 예제 1 : 두번째 인자의 값을 정해주지 않았을 때
sum(iterable, start = 0)  
result1 = sum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 
result2 = sum([]) 

# start에 아무것도 넣지 않으면 0이 들어간것과 같기 때문에 0이 더해져서 결과가 아래와 같습니다. 
print(result1) # 출력 : 55 (리스트) + 0 (start) = 55 
print(result2) # 출력 : 0 (리스트) + 0 (start) = 0 

# ========================================================== # 
# 예제 2 : 두번째 인자의 값을 정해줬을 때
sum(iterable, start = 0)  
result3 = sum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 45) 
result4 = sum([], 45) 
 
# start 에 45를 넣었기 때문에 첫번째 인자의 합과 45가 더해진 값이 나옵니다. 
print(result3) # 출력 : 55 (리스트) + 45 (start) = 100 
print(result4) # 출력 : 0 (리스트) + 45 (start) = 45
profile
삽질의 기록들🐥

0개의 댓글