본문 바로가기

코딩 테스트/Python_백준88

[백준/Python] 2231번 분해합 문제 ■ 2231번 분해합 문제 ■ 코드 풀이 아이디어를 설명해 드리겠습니다. 입력받은 자연수 N은 분해합입니다. 자신과 각 자릿수의 합입니다. 자연수 N의 가장 작은 생성자를 구하기 위해서는 먼저 각 자릿수의 합의 최댓값을 빼주고 시작합니다. 자연수 N의 최댓값은 백만이므로 나올 수 있는 자릿수의 합의 최댓값은 54(N이 999,999일 경우)입니다. 이때 입력받은 값이 54보다 작을 경우 음수가 나오므로 if 조건으로 구분해 줍니다. 이제 N-54부터 N까지 1씩 증가시키면서 total이라는 변수에 자기 자신과 각 자릿수의 합을 더해 새로운 분해합을 만듭니다. 그리고 이 분해합이 최초 입력받은 수 N과 같아지는 순간 break로 for문을 탈출하면 total에 있는 숫자가 바로 최소 생성자가 됩니다. N .. 2023. 5. 3.
[백준/Python] 2798번 블랙잭 문제 ■ 2798번 블랙잭 문제 ■ 코드 풀이 저는 이 문제를 itertools 라이브러리를 활용하여 풀었습니다. itertools는 여러 반복적인 작업을 하는 경우에 굉장히 유용하게 활용할 수 있는 라이브러리입니다. 상세 설명은 아래 링크를 확인해 주세요. https://docs.python.org/ko/3.8/library/itertools.html itertools — 효율적인 루핑을 위한 이터레이터를 만드는 함수 — Python 3.8.16 문서 itertools — 효율적인 루핑을 위한 이터레이터를 만드는 함수 이 모듈은 APL, Haskell 및 SML의 구성물들에서 영감을 얻은 여러 이터레이터 빌딩 블록을 구현합니다. 각각을 파이썬에 적합한 형태로 docs.python.org itertools 라.. 2023. 5. 2.
[백준/Python] 24313번 알고리즘 수업 - 점근적 표기 1 문제 ■ 24313번 알고리즘 수업 - 점근적 표기 1 문제 ■ 코드 풀이 처음 문제를 제대로 읽고 풀지 않아서, 오답이 나와서 한참 헤매다 드디어 풀었습니다. 이래서 문제를 잘 읽어야 하나 싶네요. 우선 아래는 정답 코드입니다. a1, a0 = map(int, input().split()) c = int(input()) n0 = int(input()) if ((a1*n0 + a0 2023. 5. 1.