[Algorithm] 백준 파이썬 1475 1052

Jifrozen·2021년 9월 13일
0

Algorithm

목록 보기
52/70

1475 방번호

# https://www.acmicpc.net/problem/1475
input_data=input()
card=[0]*10
for i in input_data:
    if i=='9' or i=='6':
        if card[6]==card[9]:
            card[6]+=1
        else:
            card[9]+=1
    else:
        card[int(i)]+=1

print(max(card))

1052 물병

# https://www.acmicpc.net/problem/1052
import sys

input = sys.stdin.readline

N, K = map(int, input().split())

answer = 0
# 3 이진수 11 -> 2개 만들어지는 물병 개수
# 4-> 100 -> 1개 만들어지는 물변 개수
# 위 이진수 이용 -> 물병의 개수보다 크면 마트에서 물병 사옴
while bin(N).count('1') > K:
    # 역순으로 index가 1인 경우
    plus = 2 ** (bin(N)[::-1].index('1'))
    answer += plus
    N += plus
print(answer)

1052는 처음에 2로 나누고 나머지랑 몫을 이용해서 계산하는 식으로 생각하고 풀었는데 찾아보니 이진수로 푼 선생님들이 많더라,,,,아이디어만 생각하면 참 깔끔한 코드로 풀 수 있는 문제같다.

0개의 댓글