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
import re
import sys
n_input = sys.stdin.readline

ex = n_input()

replaced = re.sub(r'XXXX', 'AAAA', ex)
replaced = re.sub(r'XX', 'BB', replaced)
# re.sub(바꿀 문자열, 변환된 문자열, 문자열원본)


if 'X' in replaced:
    print(-1) # 변환이 불가하다는 뜻 다른 값을 넣어도 되지만,
                # 일반적으로 불가한 경우 -1을 사용한다고 합니다.
else:
    print(replaced)

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

행운의 수-9575.py  (0) 2023.10.18
학생 번호-1235.py  (0) 2023.10.18
팰린드롬수-1259.py  (0) 2023.10.18
팰린드롬수-1213.py  (0) 2023.10.18
제로-10773.py  (0) 2023.10.18
import sys

def leehyolee(num):
    ex_list = list(str(num))
    # 121 ->"121" ->["1","2","1"] # 문자열로 변환해야 숫자가 분할되어 들어갑니다.
    re_list = list(ex_list)
    # 원본 복사
    re_list.reverse()
    # 뒤집기
    if ex_list == re_list:
        return 'yes'
    else:
        return 'no'

while True:
    n_input = sys.stdin.readline().rstrip()
    num = int(n_input)
    if num == 0:
        break
    result = leehyolee(num)
    print(result)

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

학생 번호-1235.py  (0) 2023.10.18
폴리오미노-1343.py  (0) 2023.10.18
팰린드롬수-1213.py  (0) 2023.10.18
제로-10773.py  (0) 2023.10.18
접미사 배열-11656.py  (0) 2023.10.18
import sys
n_input = sys.stdin.readline

dic = {}
s = n_input().rstrip()
# 문자의 빈도수를 확인합니다.
for key in s:
# [i]대신 .get(i) 사용하는 이유는 특정 값이 딕셔너리에 존재하지
# 않을 경우에도 오류 없이 값을 가져올 수 있습니다.
    if dic.get(key):
        dic[key] += 1
    else:
        dic[key] = 1
center = ""
for key, count in dic.items():
# 홀수 빈도수를 가진 문자를 찾고,
# 이 중에서 중앙에 위치할 문자를 결정하는 역할을 합니다.
    if count % 2 == 1:
# center에 문자가 할당되어 있다는 것은 홀수 문자가 두 종류 이상라는 의미입니다.
# 팰린드롬을 만들 수 없으므로 "I'm Sorry Hansoo"를 출력하고 프로그램을 종료합니다.
        if center != '':
            print("I'm Sorry Hansoo")
            exit(0)
        center = key

answer = ""
for key, count in sorted(dic.items()):
    answer += key * (count // 2) # 문자열을 절반만 넣습니다.
print(answer + center + answer[::-1]) # 양쪽에 붙여 팰린드롬수를 구현합니다.

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

폴리오미노-1343.py  (0) 2023.10.18
팰린드롬수-1259.py  (0) 2023.10.18
제로-10773.py  (0) 2023.10.18
접미사 배열-11656.py  (0) 2023.10.18
빙고-2578.py  (0) 2023.10.18

+ Recent posts