SWEA 40

SWEA 2805번 D3 농작물 수확하기 파이썬

리뷰1n의 범위가 크지 않아 시간 복잡도를 신경쓰지 않고 풀었다. 문제 풀이입력값을 리스트로 받아온 뒤 개행시킨다.개행시킨 리스트를 map을 통해 int로 변형시키고 리스트로 다시 받아온다.n은 홀수 고정이므로 중앙 인덱스를 초기화 해준다.마름모 꼴의 위쪽 부분과 아래쪽부분의 수확량을 각각의 for문을 통해 구해준다.테스트케이스 번호와 총 수확량을 출력한다. 참고 사항위쪽이나 아래쪽의 for문의 range값을 달리 해줘야 한다. 한쪽은 중앙 인덱스 + 1, 한쪽은 중앙 인덱스 정답 코드def q2805(): # SWEA 2805번 D3 농작물 수확하기 파이썬 t = int(input()) for i in range(1, t + 1): n = int(input()) ..

SWEA 1208번 D3 [S/W 문제해결 기본] 1일차 - Flatten 파이썬

리뷰또 출력할때 테스트 케이스 앞에 #을 넣어주지 않아 오답이 노출되었다... 후문제 풀이상자 정보를 리스트로 받아오고 상자 정보에 부호가 -인 상자 정보 리스트를 추가로 생성한다.상자 정보를 최소힙으로 -인 상자 정보를 최대힙으로 만들어준다.d가 0이 될때까지 while 루프를 돌아주며 만약 최대값과 최소값이 1이내일 경우 루프를 빠져나온다.테스트 케이스와 최대힙과 최소힙의 차이를 출력해 준다.참고 사항힙을 사용하지 않을 경우 시간 초과가 노출되는 것 같다.정답 코드def q1208(): # SWEA 1208번 D3 [S/W 문제해결 기본] 1일차 - Flatten 파이썬 import heapq for i in range(1, 11): d = int(input()) ..

SWEA 1206번 D3 [S/W 문제해결 기본] 1일차 - View 파이썬

리뷰최악의 케이스를 봤을때 10 * 1000 * 4로 총 4만이므로 시간이 널널할 것으로 예상되어 시간 복잡도 신경 안쓰고 풀었다.문제 풀이테스트 케이스가 10개이므로 range가 10인 for문을 시작한다.비교하기 쉽게 하기 위해 리스트를 받아올 때 앞 뒤로 0을 2개씩 넣어 주었다.앞 뒤 0이 아닌 범위만 for문을 돌려 현재 위치 기준 좌우 2의 건물 크기중 가장 큰 값을 현재 건물과 비교한다.현재 건물의 크기가 좌우 2 건물의 크기보다 클 경우 result에 그 차이만큼 더해준다.이후 테스트케이스 번호와 함께 result 값을 출력참고 사항없음정답 코드def q1206(): # SWEA 1206번 D3 [S/W 문제해결 기본] 1일차 - View 파이썬 for i in range(1, ..

SWEA 10965번 D3 제곱수 만들기 파이썬

리뷰D3 첫 도전, D3는 적당히 풀 수 있을 것 같아 가장 정답률이 낮은 문제를 택했다. 정답률 13%로 어떤 문제길래 이렇지? 하고 풀어보니 시간초과 파티였다. 딕셔너리를 통해 문제를 풀어 겨우 통과하였다.문제 풀이각 케이스 마다 빈 딕셔너리를 하나 초기화 해준다.현재 수를 소인수 분해 해주고 각 소인수의 지수를 딕셔너리의 value 값으로 추가 해준다.마지막 인자가 소수일 경우 이 또한 딕셔너리에 추가해 준다.거듭 제곱수를 구하는 문제지만 결국 제곱수가 b의 최소값이므로 딕셔너리의 value값이 홀수일 경우 key값을 b에 곱해준다. (소인수한 모든 지수를 짝수로 맞춰주면 해당 값이 거듭제곱 값이 되는 최소값이다.)각 케이스의 정답을 result 리스트에 추가해 주고 마지막에 result 리스트의 ..

SWEA 1486번 D4 장훈이의 높은 선반 파이썬

리뷰첫 번째 D4 문제 풀이였다. 비트 마스킹 문제는 경험한 적이 없어 그냥 선채로 죽었다. 어려웠다.문제 풀이모든 경우의 수를 구한 뒤 선반의 높이와 가장 가까운 값을 도출하고자 했다. 2중 for문을 사용해 제출했으나 정답 맞추기에 실패하였다. 결국 모든 경우의 수를 찾기 위해 비트마스킹 알고리즘을 사용한다는 것을 접하게 되었고 2 ** n 크기의 경우의 수에서 나올 수 있는 경우의 수를 모두 찾고 각 경우의 수에 선택된 점원의 합이 선반의 높이보다 크거나 같다면 해당 값을 현재 result 값과 비교하여 더 적다면 result를 갱신하도록 했다.참고 사항result의 초기값은 n의 최대 범위가 20이고 h의 최대 범위가 10000이므로 200001 이상으로 설정해 주면 된다.정답 코드def q148..

SWEA 12712번 D2 파리퇴치3 파이썬

리뷰출력을 할때 콤마를 하나 넣어서 Fail이 되었다. 쩝문제 풀이+와 x방향 분사가 가능하기에 벌레 퇴치 수에 대한 변수를 2개 사용해 주었다. 각각 변수1, 변수2로 가정현재 위치에서 상하좌우로 m만큼 떨어진 공간에 스프레이를 뿌릴 수 있다면 해당 공간의 파리 수를 변수1에 더하기2번과 마찬가지로 대각으로 m만큼 떨어진 공간에 스프레이를 뿌릴 수 있다면 해당 공간의 파리 수를 변수2에 더하기미리 초기화 해둔 result 변수와 최대값을 비교하고 더 큰 수가 있다면 result에 저장해 준다.테스트 케이스 번호와 함께 result값을 출력해 주면 된다.참고 사항출력할때는 신중히 하자..정답 코드def q12712(): # SWEA 12712번 D2 파리퇴치3 파이썬 t = int(input(..

SWEA 1959번 D2 두 개의 숫자열 파이썬

리뷰D2 문제는 확실히 D1 문제보다는 어려워진 것 같다.문제 풀이출력 시 테스트 케이스의 순번 출력이 필요하므로 범위는 1, T + 1로 설정해 준다.A, B 배열의 길이를 고려하여 2중 for문을 통해 각 인자의 곱의 합을 temp 변수에 추가해 준다.가장 큰 temp값을 result 변수에 저장 후 테스트 케이스 순번과 함께 출력해 준다.참고 사항문제에 배열 안에 들어올 수 있는 정수값의 범위가 정해져 있지 않다. result 변수를 초기화 할때 큰 음수 값으로 정해준다.A, B 배열의 길이가 같거나 서로 상이할 수 있기에 각 케이스 마다 처리 조건을 설정해 준다.정답 코드def q1959(): # SWEA 1959번 D2 두 개의 숫자열 파이썬 t = int(input()) for..

SWEA 2063번 D1 중간값 찾기 파이썬

리뷰문제를 제대로 읽지 않아 Fail 처리가 한번 됐다.문제 풀이리스트를 받아온 뒤 오름차순으로 정렬 후 리스트의 정 가운데 인덱스를 출력해 주었다.N이 홀수만 입력됨이 보장 되므로 N // 2를 해주면 가운데 인덱스를 얻을 수 있다.참고 사항리스트의 가운데 인덱스를 출력하는게 아니라 정렬된 인덱스의 가운데 인덱스를 출력해 주어야 한다. (내림차순, 오름차순 상관 없음)정답 코드def q2063(): # SWEA 2063번 D1 중간값 찾기 파이썬 n = int(input()) lst = list(map(int, input().split())) lst.sort() print(lst[n // 2])q2063()

728x90