Computer Engineering/Coding

[프로그래머스] Python3 Lv. 1 문제풀이

kstar2 2022. 11. 21. 13:14
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]

Q1. 폰켓몬

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(nums):
    if len(set(nums)) >= len(nums) / 2:
        return len(nums) / 2
    else:
        return len(set(nums))

Check Point 1. 기억해야할 function

set()

- 중복되지 않은 원소를 얻고자 할 때 사용할 수 있음

- {} 형태로 데이터를 저장함

- 데이터 추가는 s1.add()

- 여러개 값 추가는 s1.update()

- 원소 제거 s1.remove(), s1.discard()

   - remove()는 set 집합 안에 원소 없으면 KeyError 발생

   - discard()는 set 집합 안에 원소 없어도 KeyError 발생 안함

- 합집합 s1|s2 나 s1.union(s2)

- 교집합 s1&s2 나 s1.intersection(s2)

s1&s2

- 차집합 s1-s2 나 s1.difference(s2)

s1-s2                                                                                                           s2-s1

- 대칭차집합 s1^s2 나 s1.symmetric_difference(s2)

s1^s2

Check Point 2. 코드 간략화

def solution(nums):
	return min(len(set(nums)), len(nums)/2)

min()

 

2016년

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(a, b):
    answer = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"]
    month = [31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]
    if a > 1:
        return answer[(month[a-2] + b) % 7 - 1]
    else:
        return answer[b % 7 - 1]

알아야할 지식

수학적 요일 계산법

 

코드 개선

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]

sum() 함수를 이용하는 방향과 list 변수의 [:a-1]을 활용하는 것들을 기억하는 것이 중요할 듯 하다