n, k = map(int, input().split())
circle = list(range(1, n + 1))
result = []
ex_except = 0

while circle:
    ex_except = (ex_except + k - 1) % len(circle)
    # 인덱스는 0부터 시작하기때문에 k-1 하였습니다.
    # 인덱스 값을 초과하여 값이 도출되지 못할 경우가 있습니다.
    # 나머지 연산자를 활용하여 배열크기를 초과하지 못하게 했습니다.
    result.append(circle.pop(ex_except))
    # pop 함수는 인덱스 값을 가져와 삭제합니다.(잘라내기 효과와 비슷)
    # cf. remove 함수는 값을 직접 입력해서 삭제합니다.
print("<", end="")
for i in range(n - 1):
    print(result[i], end=", ")
print(f"{result[-1]}>")

 

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

수강신청-13414.py  (0) 2023.10.18
암호해독기-17176.py  (0) 2023.10.18
이항계수  (0) 2023.10.18
별찍기(7)-2777.py  (0) 2023.10.15
방 번호-1475.py  (0) 2023.10.15
import math
import sys
n_input = sys.stdin.readline
def num(N, K):
    return math.comb(N, K) # 이항 계수-> 순서 없이 조합으로 뽑는 방식입니다.

N, K = map(int, n_input().strip().split())
print(num(N, K))

 

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

암호해독기-17176.py  (0) 2023.10.18
요세푸스-1158.py  (0) 2023.10.18
별찍기(7)-2777.py  (0) 2023.10.15
방 번호-1475.py  (0) 2023.10.15
미아 노트-20114.py  (0) 2023.10.15
import sys
n_input = sys.stdin.readline().rstrip()
def star(n):
    # 중앙배열을 하기 위해, 좌측 부분에 공백을 만들고 별이 생성되게 하였습니다.
    # 별은 (해당 줄 번호 x2)-1의 형태이며, 공백은 해당 줄 번호에서 i만큼 감소 하는 형태입니다.
    # 반복이 되기 때문에, for 구문으로 나타내었습니다.
    # 상단  
    for i in range(1, n + 1):
        spaces = " " * (n - i)     # 공백
        stars = "*" * (2 * i - 1)  # 별
        print(spaces + stars)
    # 절반을 기준으로 상단과 하단을 구분하였습니다.
    # 하단
    for i in range(n - 1, 0, -1):
        spaces = " " * (n - i)
        stars = "*" * (2 * i - 1)
        print(spaces + stars)


n = int(n_input)
star(n)

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

요세푸스-1158.py  (0) 2023.10.18
이항계수  (0) 2023.10.18
방 번호-1475.py  (0) 2023.10.15
미아 노트-20114.py  (0) 2023.10.15
멘토와 멘티-26265.py  (0) 2023.10.15
import sys

n_input = sys.stdin.readline

def num(n):
    count = [0] * 10  # 0부터 9까지의 숫자 개수를 저장하는 리스트를 생성합니다.
    while n > 0:  # 입력받은 n이 0보다 큰 동안 반복합니다.
        num = n % 10  # n의 가장 오른쪽 자릿수를 구합니다. ex) 12345 -> n % 10 => 5
        count[num] += 1  # 해당 자릿수의 숫자 개수를 1 증가시킵니다.
        n //= 10  # n의 마지막 자릿수를 지우고, 오른쪽으로 한 자릿수씩 이동시킵니다. ex)12345 -> n //= 10 => 1234

    # 6과 9는 같이 사용 가능하므로 count[6]과 count[9]를 합친 뒤 2로 나눠서
    # 두 숫자를 같이 사용한 것으로 처리합니다.
    count[6] = (count[6] + count[9] + 1) // 2
    count[9] = 0  # 합친 후 9의 개수는 0으로 초기화합니다.

    return max(count)  # 가장 많이 사용된 숫자의 개수가 필요한 세트의 개수로 반환합니다.

n = int(n_input())

print(num(n))

 

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

이항계수  (0) 2023.10.18
별찍기(7)-2777.py  (0) 2023.10.15
미아 노트-20114.py  (0) 2023.10.15
멘토와 멘티-26265.py  (0) 2023.10.15
막대기-1094.py  (0) 2023.10.15
import sys

n_input = sys.stdin.readline

# 첫째 줄에 원래 문자열의 길이 N, 세로로 번진 문자의 개수 H, 가로로 번진 문자의 개수 W를 입력 받습니다.
N, H, W = map(int, n_input().rstrip().split())

note = [n_input().rstrip() for _ in range(H)]

# 문자열 인덱스 index와 지워진문자('?') 개수를 나타내는 변수 num을 초기화합니다.
i, num = 0, 0

while i < N * W:
    text = 0  # 문자를 찾았으면 -> 1, 문자가 없으면 -> 0

    # 각 행에 대해 현재 열(i 번째 열)에 있는 문자가 '?'가 아닌지 확인합니다.
    for j in range(H):
        if note[j][i] != '?':
            # 문자를 찾았으므로 출력하고 text를 1로 설정합니다.
            print(note[j][i], end="")
            text = 1
            # 다음 문자열 열로 이동하기 위해 W - n만큼 i를 증가시키고 num을 0으로 초기화합니다.
            i += W - num  
            num = 0
            break
   
    # 만약 현재 열에서 문자를 찾지 못하면, 연속된 '?' 문자의 개수를 증가시키고 i를 증가시킵니다.
    if text == 0:
        num += 1  
        i += 1  
        # 연속된 '?' 문자의 개수가 W와 같아지면 '?' 문자를 출력하고 num을 0으로 초기화합니다.
        if num == W:
            print("?", end="")  
            num = 0  

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

별찍기(7)-2777.py  (0) 2023.10.15
방 번호-1475.py  (0) 2023.10.15
멘토와 멘티-26265.py  (0) 2023.10.15
막대기-1094.py  (0) 2023.10.15
동전0-11047.py  (0) 2023.10.15
import sys
n_input = sys.stdin.readline

n = int(n_input()) # 순서쌍(멘토,멘티) 길이를 입력받습니다.
ex_list = []

for i in range(n):
    mentor, mentee = n_input().strip().split()
    ex_list.append((mentor, mentee)) # 순서쌍이 불변이 되도록 튜플로 묶어서 리스트에 추가합니다.

ex_list.sort(key= lambda x : x[1], reverse=True) # 멘티를 먼저 역순으로 만듭니다.
ex_list.sort(key= lambda x : x[0]) # 멘토를 그 다음으로 정렬합니다.
#    정렬 순서가 바뀌면 결과값이 바뀝니다.
#    ex_list = [('a', 'b'), ('a', 'c'), ('b', 'c')]
#    멘티(역순) -> 멘토 정렬 :('a', 'c'), ('a', 'b'), ('b', 'c')
#    멘토 -> 멘티 정렬 : ('a', 'c'), ('b', 'c'), ('a', 'b')
for ans in ex_list:
    print(*ans)

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

방 번호-1475.py  (0) 2023.10.15
미아 노트-20114.py  (0) 2023.10.15
막대기-1094.py  (0) 2023.10.15
동전0-11047.py  (0) 2023.10.15
덩치-7568.py  (0) 2023.10.15
import sys
n_input = sys.stdin.readline
X = int(n_input().strip())
count = 0

while X > 0: # x가 0보다 큰 동안 반복
    if X & 1:
        # X & 1은 이진수 표현에서 가장 오른쪽 비트와 1을 AND 연산한 결과를 반환합니다.
        # 맨 오른쪽 비트가 1이라는 것은 십진수로 1이라는것을 의미합니다.
        count += 1
    X >>= 1
    # X >>= 1을 한 번 수행하면 X의 이진수 표현을 오른쪽으로 한 비트씩 이동시킵니다.
    # ex) 10101 ->1010 -> 101 -> 10 -> 1
    # X >>= 1은 X 값을 2로 나눈 결과와 같습니다

print(count)

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

미아 노트-20114.py  (0) 2023.10.15
멘토와 멘티-26265.py  (0) 2023.10.15
동전0-11047.py  (0) 2023.10.15
덩치-7568.py  (0) 2023.10.15
단어 정렬-1181.py  (0) 2023.10.15
import math
import sys

n_input = sys.stdin.readline
def min(N, K, coins):
    count = 0
    # 동전을 거꾸로 순회하여 큰 동전부터 사용하도록 합니다.(조건, 동전은 오른차순으로 되어있습니다.)
    for coin in coins[::-1]:        
        x, y = divmod(K, coin) #divmod 함수는 (피제수,제수)->(몫,나머지)로 반환합니다.
        # 현재 가치 K를 현재 동전으로 나눈 몫(x)과 나머지(y)를 구합니다.
        count += x
        # 몫을 동전 개수에 더 합니다.
        K = y
        # 현재 가치 K를 나머지 값으로 업데이트 합니다.
    return count

N, K = map(int, n_input().split())
# 입력으로 동전 종류의 개수 N과 목표 가치 K를 받음
coins = [int(n_input()) for _ in range(N)]
# N개의 줄에 동전의 가치 Ai를 입력받아 coins 리스트에 저장
print(min(N, K, coins))
# min_coins_combination 함수를 호출하여 동전 개수의 최솟값을 계산하고 출력

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

멘토와 멘티-26265.py  (0) 2023.10.15
막대기-1094.py  (0) 2023.10.15
덩치-7568.py  (0) 2023.10.15
단어 정렬-1181.py  (0) 2023.10.15
단어공부-1157.py  (0) 2023.10.15
import sys

n_input = sys.stdin.readline
# input 내장함수랑 겹쳐서 n_input로 표현했습니다.
n = int(n_input())
arr = []

for _ in range(n):
    arr.append(list(map(int,n_input().split())))
   
result = [1] * n  # n개의 값만큼 리스트를 초기화합니다.
                  # n = 5일때 [1, 1, 1, 1, 1]
for i in range(n):
    weight, height = arr[i]
    for j in range(n):
        if i != j: # 똑같은 대상이 중복 비교 안되게 합니다.
            n_weight, n_height = arr[j]
            if weight < n_weight and height < n_height:
                result[i] += 1
                # 현재 대상이 새로운 비교 대상보다 작을때 등수를 추가합니다.
print(*result) # *사용함으로써 [1,2,3,4,5] -> 1 2 3 4 5 로 출력되게 합니다.

 

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

막대기-1094.py  (0) 2023.10.15
동전0-11047.py  (0) 2023.10.15
단어 정렬-1181.py  (0) 2023.10.15
단어공부-1157.py  (0) 2023.10.15
다리 놓기 1010.py  (0) 2023.10.15
import sys
n_input = sys.stdin.readline

n = int(n_input())
words = set() # 중복된 단어를 제거하기 위해 집합 사용했습니다.
             
for _ in range(n):
    word = n_input().rstrip()
    words.add(word)

words = sorted(words, key=lambda x: (len(x), x))
# set함수는 정렬이 불가해서 list로 감싸서 정렬을 합니다.
# Key로 len(x)를 지정하여 길이를 오름차순 기준으로 정렬합니다.
# 오름차순 정렬 -> 작은 길이에서 큰 길이
# 길이에 따라 정렬하고 같을 경우, 문자열 오름차순을 이용하여 사전식 배열합니다.

for word in words:
    print(word)

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

동전0-11047.py  (0) 2023.10.15
덩치-7568.py  (0) 2023.10.15
단어공부-1157.py  (0) 2023.10.15
다리 놓기 1010.py  (0) 2023.10.15
나이 순 정렬-10814.py  (0) 2023.10.15

+ Recent posts