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 re # 정규표현식(특정한 규칙을 가진 문자열 패턴을 표현하기 위한 형식)을 지원하는 모듈
import sys
n_input = sys.stdin.readline

def ucpc(ex):
    return re.search("U.*C.*P.*C.*", ex ) is not None
    # ""안의 문자열과 문자열 순서가 ex와 같은지 search함수로 확인합니다.
    # . -> (공백, 숫자, 특수문자 등) 한 글자가 있어도 매치됩니다
    # ex) U.C -> UXC ,UAC, U C,U1c 다 매치됩니다.
    # * -> 앞의 문자가 0회 이상 반복됨을 나타냅니다.
    # is not None -> 매치에 실패할시 None을 반환하고, 매치되면 그 값을 반환합니다.

new_input = n_input().strip() # 공백을 제거합니다.
if ucpc(new_input):
    print("I love UCPC")
else:
    print("I hate UCPC")

'코딩 연습 > 백준 코드' 카테고리의 다른 글

N과M(5)-15654.py  (0) 2023.10.19
N과M(3)-15651.py  (1) 2023.10.19
N과M(1)-15649.py  (0) 2023.10.19
회사에 있는 사람-7785.py  (0) 2023.10.18
행운의 수-9575.py  (0) 2023.10.18
import sys
n_input = sys.stdin.readline
def dfs(N, M, sequence, numbers):
   
    if len(sequence) == M:
        print(*sequence)
        return

    for num in numbers:    
        if num not in sequence:
            dfs(N, M, sequence + [num], numbers)


N, M = map(int, n_input().split())

numbers = list(map(int, n_input().split()))
numbers.sort()

dfs(N, M, [], numbers)

'코딩 연습 > 백준 코드' 카테고리의 다른 글

UCPC는 무엇의 약자일까-15904.py  (0) 2023.10.19
N과M(3)-15651.py  (1) 2023.10.19
N과M(1)-15649.py  (0) 2023.10.19
회사에 있는 사람-7785.py  (0) 2023.10.18
행운의 수-9575.py  (0) 2023.10.18
from itertools import product
import sys

n_input = sys.stdin.readline

def n_product(N, M):
    numbers = list(range(1, N + 1))
    for sequence in product(numbers, repeat=M):
        # 이때, repeat=M 사용하여 중복 허용 여부를 설정합니다. 같은 값이 들어 갈 수 있는 최대 개수
        # ex) repeat=2인 경우 (1, 1), (1, 2), ..., (N, N)
        # 생성된 순서쌍들을 공백으로 구분하여 출력합니다.
        # cf. numbers, repeat=M 대신 ['a','b'],[1,2]형식으로 호출하면 첫번째 리스트 원소와 두번째 리스트 원소 조합쌍을 만들어줍니다.
        # ex) ['a',1],['a',2],['b',1],['b',2]
        print(*sequence)

N, M = map(int, n_input().split())
n_product(N, M)

'코딩 연습 > 백준 코드' 카테고리의 다른 글

UCPC는 무엇의 약자일까-15904.py  (0) 2023.10.19
N과M(5)-15654.py  (0) 2023.10.19
N과M(1)-15649.py  (0) 2023.10.19
회사에 있는 사람-7785.py  (0) 2023.10.18
행운의 수-9575.py  (0) 2023.10.18
import sys
n_input = sys.stdin.readline

def dfs(N, M, sequence):
   
    if len(sequence) == M:
     # 수열의 길이가 M과 같아지면 출력합니다.
        print(*sequence) #sequence를 언패킹합니다.
        return

    for num in range(1, N + 1):        
        if num not in sequence:
        # 수열에 해당 수가 없는 경우에만, 다음 숫자를 선택합니다.
        # 수열에서 중복되는 숫자를 피하기 위해서입니다.
            dfs(N, M, sequence + [num])
            # 다음 숫자를 선택한 경우에 재귀 호출하여 다음 자리 숫자를 결정합니다.
            # sequence + [num] -> ex) [1,2,3]=>sequence + [4] => [num]  -> [1,2,3,4]
N, M = map(int, n_input().split())
dfs(N, M, []) # sequence는 초기에 빈 리스트로 시작합니다.


'코딩 연습 > 백준 코드' 카테고리의 다른 글

N과M(5)-15654.py  (0) 2023.10.19
N과M(3)-15651.py  (1) 2023.10.19
회사에 있는 사람-7785.py  (0) 2023.10.18
행운의 수-9575.py  (0) 2023.10.18
학생 번호-1235.py  (0) 2023.10.18
import sys

n_input = sys.stdin.readline
def current(n):
    employees = set()  
    for _ in range(n):  
        name, status = n_input().strip().split()  # 이름과 출입 상태를 입력 받습니다. strip() 메서드를 호출하여 개행 문자를 제거합니다.
        if status == "enter":  # 만약 출입 상태가 "enter"이면 (출근한 경우)
            employees.add(name)
        else:  # 퇴근한 경우
            employees.remove(name)
    return sorted(employees, reverse=True) # 사전 순의 역순으로 직원의 이름을 정렬하여 반환합니다.

n = int(n_input())  # 로그에 기록된 출입 기록의 수 n을 입력 받습니다.
result = current(n)  # current 함수를 호출하여 현재 회사에 있는 직원들의 이름을 얻습니다.
for name in result:  # 현재 회사에 있는 직원들의 이름을 출력합니다.
    print(name)

'코딩 연습 > 백준 코드' 카테고리의 다른 글

N과M(3)-15651.py  (1) 2023.10.19
N과M(1)-15649.py  (0) 2023.10.19
행운의 수-9575.py  (0) 2023.10.18
학생 번호-1235.py  (0) 2023.10.18
폴리오미노-1343.py  (0) 2023.10.18
# 테스트 케이스 개수를 입력 받음
num_test_cases = int(input())

# 각 테스트 케이스를 처리
for _ in range(num_test_cases):
    # 각 수열의 크기를 무시하는 입력을 받음
    input()
   
    # 수열 A를 입력 받아서 집합 A에 저장
    A = set(map(int, input().split()))
   
    # 수열 B를 입력 받아서 집합 B에 저장
    input()
    B = set(map(int, input().split()))
   
    # 수열 C를 입력 받아서 집합 C에 저장
    input()
    C = set(map(int, input().split()))
   
    # 가능한 모든 조합을 확인하고 행운의 수를 찾음
    lucky_numbers = set()
   
    for a in A:
        for b in B:
            for c in C:
                # 각 수열의 숫자를 더해서 문자열로 만듦
                num = str(a + b + c)
               
                # 문자열에 '5'와 '8'만 있는지 확인
                if set(num).issubset({'5', '8'}):
                    lucky_numbers.add(num)
   
    # 행운의 수의 개수를 출력
    print(len(lucky_numbers))

'코딩 연습 > 백준 코드' 카테고리의 다른 글

N과M(1)-15649.py  (0) 2023.10.19
회사에 있는 사람-7785.py  (0) 2023.10.18
학생 번호-1235.py  (0) 2023.10.18
폴리오미노-1343.py  (0) 2023.10.18
팰린드롬수-1259.py  (0) 2023.10.18
import sys

n_input = sys.stdin.readline

# 학생의 수를 입력 받습니다.
N = int(n_input().rstrip())

# 학생 번호를 입력 받아 리스트에 저장합니다.
students = [n_input().rstrip() for _ in range(N)]

# 주어진 학생들의 학생 번호를 가장 뒷자리부터 k개씩 추려서 비교하여
# 모든 학생들의 번호를 서로 다르게 만들 수 있는 최소의 k를 찾는 함수입니다.
def min_k(students):
    n = len(students)
    k = 1
    while True:
        # [-k:]를 사용하여 가장 뒷자리부터 하나씩 추려서 정렬된 리스트를 생성합니다.
        li = sorted(student[-k:] for student in students)
        # 뒤자리부터 비교하여, 중복이 생길 경우 빠져나옵니다.
        # 반복문이 중간에 중단되지 않았다면 중복된 학생 번호가 없다는 뜻입니다.
        # K를 늘려 비교하는 뒤자리 수를 늘려 과정을 반복합니다.
        for i in range(1, n):
            if li[i] == li[i - 1]:    
                break
        else:
            return k
        k += 1
result = min_k(students)

print(result)

'코딩 연습 > 백준 코드' 카테고리의 다른 글

회사에 있는 사람-7785.py  (0) 2023.10.18
행운의 수-9575.py  (0) 2023.10.18
폴리오미노-1343.py  (0) 2023.10.18
팰린드롬수-1259.py  (0) 2023.10.18
팰린드롬수-1213.py  (0) 2023.10.18

+ Recent posts