import random

def leap_year(year) :
    return int(((year & 3) == 0 and (year % 100 != 0)) or (year % 400 == 0))
# 비트 마스크와 나머지 연산자를 사용하여 (4의 배수 and 100의 배수X) or 400배수를 판단하여 윤년을 판단하였습니다.
# int로 전체를 묶어  True = 1 , False = 0 으로 변환시켰습니다.
for _ in range(20):
    year = random.randrange(1000, 3001)
    print(f"Year: {year}, Year: {leap_year(year)}")
# for 구문과 range를 사용하여 무작위로 년도를 20개를 뽑아 윤년을 검산하였습니다.

'코딩 연습 > 프로그래머스 코드' 카테고리의 다른 글

개인정보 수집 유효기간.py  (1) 2023.10.19
사분면 고르기.py  (0) 2023.10.19
양과늑대2023.py  (0) 2023.10.15
from datetime import datetime

def count_date(day):
    dt = datetime.strptime(day, "%Y.%m.%d")
    #strptime함수로 datetime 형식으로 변환하는 dt를 만듭니다.
    all_day = dt.year * 12 * 28 + (dt.month - 1) * 28 + dt.day
    # 총 며칠인지 계산합니다 (한달은 28일입니다.)
    # 월을 0부터 시작하는 인덱스로 사용하여 쉽게 계산하기 위함입니다.
    # 1월은 day로 계산하고 2월부터 계산하기 위해서 입니다.
    # 예를 들어, 1월은 인덱스 0, 2월은 인덱스 1, ..., 12월은 인덱스 11로 매핑됩니다.
    return all_day

def solution(today, terms, privacies):
    answer = []  # 결과를 저장할 리스트
    terms_dict = {}  # terms에 포함된 각 유효기간과 해당 기간을 저장할 딕셔너리입니다
    today = count_date(today)  # 오늘 날짜를 카운트하여 저장합니다


    for i in terms:
        name, days = i.split()
        terms_dict[name] = int(days) * 28
    # terms 리스트를 순회하며 약관의 종류(이름)과 기간을 terms_dict에 저장합니다
   
    for i, privacies in enumerate (privacies):
        # enumerate 함수는 파이썬에서 제공하는 내장 함수로, 순회 가능한(iterable)
        # (예: 리스트, 튜플, 문자열 등)를 인자로 받아 해당 객체의 각 요소와 인덱스를 순차적으로 반환하는 함수입니다.
        day, term = privacies.split(" ") # " "을 기준으로 "day", "term"을 구분합니다.
        day = count_date(day)  # 주어진 날짜를 카운트하여 저장합니다
        day += terms_dict[term]  # 개인정보가 수집된 유효기간을 더하여 적용된 날짜를 계산합니다

        if today >= day:  # 오늘 날짜와 개인정보가 수집된 요효기간 날짜를 비교하여 오늘보다 과거인 경우,
            answer.append(i + 1)  # 해당 용어의 인덱스에 1을 더하여 answer 리스트에 추가합니다.

    return answer  

'코딩 연습 > 프로그래머스 코드' 카테고리의 다른 글

윤년.py  (0) 2023.10.19
사분면 고르기.py  (0) 2023.10.19
양과늑대2023.py  (0) 2023.10.15
def A(x, y):
    if x > 0 and y > 0:
        return 1
    elif x < 0 and y > 0:
        return 2
    elif x < 0 and y < 0:
        return 3
    elif x > 0 and y < 0:
        return 4

 

'코딩 연습 > 프로그래머스 코드' 카테고리의 다른 글

윤년.py  (0) 2023.10.19
개인정보 수집 유효기간.py  (1) 2023.10.19
양과늑대2023.py  (0) 2023.10.15
import numpy as np

def solution(info, edges):
    N = len(info)
    visited = np.zeros(N, dtype=int)  # 노드 방문 여부를 저장하는 배열 (0: 미방문, 1: 방문)
    visited[0] = 1  # 루트 노드는 항상 방문으로 설정
    answer = []  # 최대 양의 개수를 저장할 리스트

    def dfs(sheep, wolf):
        if sheep > wolf:  # 현재 양의 개수가 늑대의 개수보다 많은 경우
            answer.append(sheep)  # 최대 양의 개수를 갱신
        else:
            return  # 양이 늑대보다 적거나 같은 경우, 더 이상 진행하지 않음

        for i in range(len(edges)):  
            parent, child = edges[i]  # 부모와 자식 노드를 가져옴
            isWolf = info[child]  # 현재 자식 노드가 늑대인지 양인지 확인

            # 부모 노드는 이미 방문했고 자식 노드는 방문하지 않은 경우에만 진행
            if visited[parent] and not visited[child]:
                visited[child] = 1  # 자식 노드를 방문으로 설정
                dfs(sheep + (isWolf == 0), wolf + (isWolf == 1))  
                visited[child] = 0  # 재귀 호출이 끝나면 다시 방문하지 않은 상태로 변경

    dfs(1, 0)  # 루트 노드에서 DFS 시작
    return max(answer)  # 최대 양의 개수 반환
 

오류가 있거나, 개선점이 있으면 언제든지 알려주세요!

 

'코딩 연습 > 프로그래머스 코드' 카테고리의 다른 글

윤년.py  (0) 2023.10.19
개인정보 수집 유효기간.py  (1) 2023.10.19
사분면 고르기.py  (0) 2023.10.19

+ Recent posts