문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 `DFS`를 통한 백트래킹으로 NxN 크기의 체스판에서 Queen을 배치할 수 있는 경우의 수를 계산할 수 있다. 이는 앞서 다룬 백준: 9663 N-Queen과 동일한 로직으로 풀면 된다. N의 크기가 최대 10이기 때문에 백준의 문제와는 달리 Python으로도 충분히 통과할 수 있다. 다시 한번 로직을 상기해보자면 다음과 같다. 행의 경우 DFS를 호출하며 증가시키므로, 별도의 중복확인이 필요하지 않다. 열의 경우 해당 열을 선택하면 `set`에 추가하여 중복을 확인한다. 우측 상단에서 좌측 하단의 대각선의 경우 현재 `X + Y`를 `set`..
문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 농작물을 수확하여 얻을 수 있는 이익이 행열에 주어 질 때, 마름모로 탐색하여 이익의 합을 구하는 문제이다. 마름모로 접근하는 로직만 설계하면 끝나는 문제이다. 마름모를 접근하기 위해서는 다음과 같이 생각하면 된다. 예를 들어 3x3 행렬이라고 하면 다음과 같이 접근하게 된다. (0, 1) (1, 0), (1, 1), (1, 2) (2, 1) 이와 같이 접근하고자 할 때 `j`의 범위에 대한 규칙은 `abs(N // 2 - i)`부터 `abs(N - half)`이다. `half`는 i가 절반이 되기 전까지는 감소하고, 절반이 된 이후로는 증가하여 ..
문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 메모리가 초기화되어 모든 bit가 0이 된 상태에서 원래 상태로 돌아가기 위한 최소 변환 횟수를 구하는 문제이다. 메모리를 변경하는 데 있어 다음과 같은 규칙이 있다. 예를 들어 `000`을 변환하면 하나만 변환하여도 `111`로 변환되게 된다. 따라서 처음에 비교할 bit를 0으로 두고 0과 다르다면 비교 비트를 1로 바꾸는 식으로 스위치 하여 비교하면서 현재 비트와 비교할 bit가 다른 경우를 카운트하면 bit를 변경하는 횟수가 된다. 코드 T = int(input()) for test_case in range(1, T + 1): answer ..
문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 중복이 되는 경우 소거하여, 중복이 없을 때까지 반복하여 남는 문자를 비밀번호로 하는 문제이다. 문제를 풀기 위해서는 `stack`을 사용하면 쉽게 풀 수 있다. `stack`에 추가 되는 규칙은 `stack[-1] == 현재 숫자`와 같은 경우 `stack.pop()`을 하고 아닌 경우 `stack.append(현재 숫자)`를 하여 비밀번호 값을 stack에 유지한다. 프로그래머스: 올바른 괄호를 중복된 숫자가 대신한다고 생각하면 된다. 코드 for test_case in range(1, 11): stack = [] n, nums = input(..