본문 바로가기

전체 글165

[백준/Python] 1018번 체스판 다시 칠하기 문제 ■ 1018번 체스판 다시 칠하기 문제 ■ 코드 풀이 개인적으로 너무 어려웠던 문제였습니다. 다른 분의 코드를 참고하여 문제를 풀었습니다. 핵심 아이디어는 Convolution 연산과 비슷합니다. 크기가 큰 이미지가 있으면, 8 by 8 짜리 작은 Window가 그 이미지를 쭉 스캔한다고 생각하시면 됩니다. 전체 이미지에서 스캔의 범위를 정하기 위해 for문이 2개(i와 j) 필요합니다. 문제에서 색깔은 'B'와 'W' 밖에 없고, 각각 번갈아서 색칠되어야 하기 때문에 제일 위의 왼쪽 Block의 색깔에 따라 2가지 경우밖에 없다고 제시했습니다. 따라서 이 두 가지 경우에 대해서만 고려하면 됩니다. 이를 위해 8 by 8 Window가 선택되었다면 그 안에서 첫 번째 Block이 'B'인 경우(is_it.. 2023. 5. 5.
[백준/Python] 19532번 수학은 비대면강의입니다 문제 ■ 19532번 수학은 비대면강의입니다 문제 ■ 코드 풀이 저는 단순히 쉽게 생각했습니다. x, y 2개의 변수밖에 없고 범위도 제한적이며 유일해가 보장되므로 for 문을 통해 값을 차례대로 대입하며 해를 찾도록 코드를 작성했습니다. 도중에 해를 찾으면, 그 해는 문제 조건에 의해 유일해이므로 바로 두 개의 반복문을 모두 탈출합니다. a,b,c,d,e,f = map(int, input().split()) solution = False for x in range(-999,1000): for y in range(-999,1000): if (a*x + b*y == c) and (d*x + e*y == f): solution = True break if solution: break print(x,y) 2023. 5. 4.
[백준/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.
[백준/Python] 24267번 알고리즘 수업 - 알고리즘의 수행 시간 6 문제 ■ 24267번 알고리즘 수업 - 알고리즘의 수행 시간 6 문제 ■ 코드 풀이 개인적으로 알고리즘 수업 중에서는 이 문제가 가장 어려웠던 것 같습니다. 문제 설명에 앞서, 시간 복잡도에 대해 모르시는 분들께서는 아래 글을 천천히 읽고 와주세요. [백준/Python] 24262번 알고리즘 수업 - 알고리즘의 수행 시간 1 문제 [백준/Python] 24262번 알고리즘 수업 - 알고리즘의 수행 시간 1 문제 ■ 24262번 알고리즘 수업 - 알고리즘의 수행 시간 1 문제 ■ 코드 풀이 처음 문제를 접했을 때, 당황스러웠습니다. 아무리 읽어도 문제가 이해가 안 되더군요. 혹시 저와 같은 분이 계셨다면, 아래 kevinitcoding.tistory.com 이 문제는 O(n^3)의 시간 복잡도를 갖습니다. 따라.. 2023. 4. 30.