\
4837. [파이썬 S/W 문제해결 기본] 2일차 - 부분 집합의 합
·
Algorithm/SW Expert Academy Review
D3 Problem SW Expert Academy 부분집합의 합 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com Solution 1. Bit Masking을 이용하여 각 자리에 숫자가 있는지 확인하는 방식을 이용한다. 2. 이 중 길이가 K이면서, N번째 부분 집합을 카운트한다. Bit Masking bit 연산을 통해 각 자리에 숫자가 있는가를 확인하는 방법 솔직히 나도 한번에 이해가 되지 않았다. 예를 들어서, 3이라는 숫자가 있으면, 2진수로 0b0011로 표현할 수 있다. 이는 첫 번째, 두 번째 자리에 1, 세 번째, 네 번째 자리에 0이 있어 & 연산을 하면 첫 번째와 두 번째 자리에 숫자를 찾을 ..
16268. 풍선팡2
·
Algorithm/SW Expert Academy Review
D2 Problem SW Expert Academy 풍선팡2 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com Solution 1. 범위 내의 모든 값을 확인하는 완전 탐색을 구현한다. 2. 상하좌우를 돌 때, 자기 자신도 값에 포함하기 위해 초기 값을 자기 자신으로 둔다. 3. 최댓값을 찾기 위해 리스트를 하나 만들어 저장한다. 4. max() 함수를 통해 최댓값을 출력한다. Code move = [(1,0), (0,1), (-1,0), (0,-1)] for test_case in range(1, int(input())+1): N, M = map(int, input().split()) board = [list(..
9490. 풍선팡
·
Algorithm/SW Expert Academy Review
D2 Problem SW Expert Academy 풍선팡1 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com Solution 1. 범위 전체를 돌면서 모두 탐색하는 완전 탐색을 한다. 2. 방향을 의미하는 리스트를 만들고, 반복문을 통해 탐색한다. 3. 방향에 대해 리스트 내부 값만큼 퍼지는 경우를 반복문을 통해 구현한다. 4. 이 중 가장 큰 값을 저장하여 출력한다. Code for test_case in range(1, int(input())+1): N, M = map(int, input().split()) arr = [list(map(int, input().split())) for _ in range(N)..
1208. [S/W 문제해결 기본] 1일차 - Flatten
·
Algorithm/SW Expert Academy Review
D3 Problem SW Expert Academy Flatten Solution 1. 최댓값과 최솟값의 차이를 최소로 만드는 것을 목표로 하고 시작한다. 2. 최댓값과 최솟값이 같아지면 더 이상 옮길 필요가 없다. 3. 최댓값에서 최솟값으로 하나씩 옮기면 언젠가 원하는 곳에 도달한다. Code # 최댓값과 최솟값 찾기 def max_height(arr): max_h = min_h = arr[0] for i in range(len(arr)): if arr[max_h] arr[i]: min_h = i return [max_h, min_h] for test_case in range(1, 11): dump = int(input()) box_lis..
4831. [파이썬 S/W 문제해결 기본] 1일차 - 전기버스
·
Algorithm/SW Expert Academy Review
D3 Problem SW Expert Academy 전기버스 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com Solution 1. 정거장 배열을 만들어 충전소를 저장한다.(충전소를 인덱스로 하여 충전소가 있으면 1 없으면 0) 2. 이동 후 충전소의 위치를 확인하고, 충전소가 충분한 거리만큼 위치하지 않으면 0, 아니면 최소 충전 횟수를 출력한다. 3. 만약 충전소가 충분한 거리 내에 있었다면, 가장 마지막 충전소에서 충전한 것으로 가정하고 위치를 마지막 충전소로 지정한다. Code for test_case in range(1, int(input()) + 1): K, N, M = map(int, input()...
16180. 4834. [파이썬 S/W 문제해결 기본] 1일차 - 숫자 카드
·
Algorithm/SW Expert Academy Review
D2 Problem SW Expert Academy 숫자 카드 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com Solution 1. Counting Sort 와 같이 index를 값으로 하는 리스트를 만들어 개수를 센다. 2. 개수 내에서 최댓값과 그 index를 출력한다. Code for test_case in range(1, int(input()) + 1): N = int(input()) # 0이 제일 앞에 나올때를 대비해 str형식으로 받아 한 글자씩 int 변환 num_list = list(map(int, list(input()))) cnt = [0] * 10 # 개수 카운트용 리스트(Index = 숫자..