본문 바로가기

분류 전체보기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.