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
def num(n, m, A, B):
    return len((set(A) - set(B)) | (set(B) - set(A))) # {1} + {6, 7} -> {1, 6, 7} -> 3
    # 각 차집합을 |(합집합 연산(?))을 이용하여 대칭차집합을 구합니다.

n, m = map(int, input().split()) # n,m은 A,B 원소의 개수 입니다. ex) 3,4
A = list(map(int, input().split())) # A의 원소들을 담은 리스트입니다. ex) [1,2,3]
B = list(map(int, input().split())) # B의 원소들을 담은 리스트입니다. ex) [2,3,6,7]
print(num(n, m, A, B))

 

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
import sys

n_input = sys.stdin.readline
alphabet = n_input().upper().rstrip()  
# 대소문자 구분하지 않고 처리하기 위해 대문자화 시킵니다.
count = 0
result = '' # 알파벳 저장소
for i in set(alphabet): # set에 넣어 중복을 제거합니다. 같은 알파벳을 카운트 하는 것을 방지합니다.
    if i.isalpha():  # 알파벳인 경우에만 처리
        if alphabet.count(i) > count:
            # 집합에 속하는 각각의 문자의 횟수를 계산합니다.
            count = alphabet.count(i)
            # 현재까지 가장 많이 등장한 알파벳을 저장합니다.
            result = i
        elif alphabet.count(i) == count:
            result = '?'
            # 동률일 경우 ?를 반환합니다.
print(result)

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

덩치-7568.py  (0) 2023.10.15
단어 정렬-1181.py  (0) 2023.10.15
다리 놓기 1010.py  (0) 2023.10.15
나이 순 정렬-10814.py  (0) 2023.10.15
국영수-10825.py  (0) 2023.10.15
import math
import sys
n_input = sys.stdin.readline
# 조합을 이용하여 다리를 지을 수 있는 경우의 수를 계산합니다.
def bridges(N, M): # M은 동쪽 사이트, N은 서쪽 사이트
    return math.comb(M, N) #(M, N) = M! / (N! * (M-N)!)
C = int(n_input())
# 케이스 수만큼 반복
for _ in range(C):
    # 강의 서쪽과 동쪽에 있는 사이트의 개수 N과 M을 입력받음
    N, M = map(int, n_input().split())
    # bridges 함수를 호출하여 다리를 지을 수 있는 경우의 수를 계산하고 출력
    print(bridges(N, M))

 

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

덩치-7568.py  (0) 2023.10.15
단어 정렬-1181.py  (0) 2023.10.15
단어공부-1157.py  (0) 2023.10.15
나이 순 정렬-10814.py  (0) 2023.10.15
국영수-10825.py  (0) 2023.10.15

+ Recent posts