백준 4

백준 4673번 셀프 넘버

[문제] https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net [풀이] numbers = set(range(1, 10000)) have_generated_num_set = set() for num in numbers: for n in str(num): num += int(n) have_generated_num_set.add(num) self_numbers = numbers - have_generate..

백준 2022.08.08

백준 1110번 더하기 사이클

[문제] https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net [내가 짠 코드] start = int(input()) num = start count = 0 # 원래 숫자로 돌아오는데까지 걸리는 횟수 while True: a = num // 10 # 두자리 숫자에서 10의 자리 숫자만을 얻음 b = num % 10 # 두자리 숫자에서 1의 자리 숫자만을 얻음 c = (a+b) % 10 # 문제 조건에 따라 앞자리 숫자 + 둣지라 숫자해..

백준 2022.08.04

백준 4344번 평균은 넘겠지

[문제 링크] https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net [내가 짠 코드] test = int(input()) # 테스트 케이스 횟수 for _ in range(test): nums = list(map(int, input().split())) avg = sum(nums[1:]) / nums[0] count = 0 # 평균 넘는 사람 세기 위한 카운트 for i in nums[1:]: if i > avg: count += 1 rate = (count / nums[0]) * 100 # 평균을 넘는 비율 print(for..

백준 2022.08.04

백준 2525번 오븐 시계 문제

내가 짠 코드 나름 열심히 코드를 짜 봤고 문제에서 예시로 준 입력을 줬을 때도 정상적으로 출력이 잘 나오길래 맞았구나 싶었는데 세 번 연속으로 매정하게 틀렸습니다! 를 마주했다. 뭐가 문제인걸까.. 검색해서 찾은 코드 일단 내가 짠 코드에 비해 압도적으로 간결하다는데서 1차 충격을 먹었고 이건 정답으로 인정돼서 2차 충격을 받았다. 내가 짠 코드에는 조건에 시간이 들어가게 했는데 답안 코드는 일단 시간을 변하게 해놓고 그 이후에 조건에 넣어서 결과값을 출력하는 것이 나랑 가장 다른 것 같다. 이렇게 하니까 훨씬 가독성도 쉽고 이해하기도 쉬운 것 같다. 내 코드는 너무 지저분하고 식이 복잡해보여서 한 눈에 이해가 쉽지 않은 것 같다. 조건식에는 최대한 간결하게 하고 미리 세팅을 해둔 상태로 조건식에 넣는..

백준 2022.05.22