분류 전체보기 894

백준 2477번 참외밭 파이썬

리뷰딕셔너리를 활용해 풀고자 했는데 참외밭의 모양마다 작은 면적의 인덱스가 달라 어려움을 겪었다. 리스트 인덱스를 통한 풀이 방법으로 통과문제 풀이방향과 길이를 리스트를 초기화 후 각각의 리스트에 값을 전달해 준다.먼저 큰 사각형의 가로 세로 길이부터 구해준다.작은 사각형의 가로의 길이는 큰 사각형과 인접해 있는 가로 길이의 차이다. 절댓값을 활용해 줬다.작은 사각형의 세로길이도 마찬가지로 큰 사각형과 인접해 있는 세로 길이의 차이다.큰 사각형에서 작은 사각형을 빼준 후 1m^2당 참외 갯수를 더해주면 된다.참고 사항인접한 인덱스를 구할 때 i - 1, i + 1로 해줄 경우 인덱스 에러가 날 가능성이 있으므로 % 6을 통해 인덱스를 범위 내에서 잘 지정해 주자정답 코드def q2477(): # 백..

백준 14696번 딱지놀이 파이썬

리뷰푸는 방법은 많겠지만 나는 시간복잡도의 이점을 활용하기 위해 딕셔너리를 활용했다.문제 풀이각 라운드가 진행될 때마다 1~4의 키값을 가진 a, b 딕셔너리를 각각 초기화 해준다.리스트내 값을 딕셔너리 value에 더해준다.winner 변수를 초기화 해주고 -1일 경우 무승부 0일 경우 a승리 1일 경우 b승리로 사용할 것이다.별이 가장 좋은 딱지이므로 4부터 시작하여 1까지 내림차순으로 value 값을 비교해 준다.winner 변수 값에 알맞게 승자 혹은 무승부를 출력해 준다.참고 사항리스트에서 딕셔너리로 값을 전달할때 리스트의 맨 앞 숫자는 딱지의 개수를 나타내므로 전달해 주지 않아야 한다.정답 코드def q14696(): # 백준 14696번 딱지놀이 파이썬 n = int(input()..

백준 2669번 직사각형 네개의 합집합의 면적 구하기 파이썬

리뷰색종이 문제와 비슷했다. 쉬운 문제문제 풀이좌표 값을 리스트로 받아 준다.100 * 100 크기의 2차원 배열을 생성해 준다. 인덱스를 편하게 하기 위해 101 * 101로 생성해 주었다.리스트 내 요소를 돌며 해당 좌표 내의 2차원 배열을 1로 변경해 준다.2차원 배열 전체의 값을 더해준 뒤 출력참고 사항없음정답 코드def q2669(): # 백준 2669번 직사각형 네개의 합집합의 면적 구하기 파이썬 lst = [list(map(int, input().split())) for _ in range(4)] dp = [[0] * 101 for _ in range(101)] for a in lst: for i in range(a[0], a[2]): f..

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 1961번 D2 숫자 배열 회전 파이썬

리뷰코드가 조잡스럽긴 하지만 1트만에 솔!문제 풀이1. 출력에 테스트케이스 값이 필요하니 1, t + 1범위로 for문 시작2. 회전시킬 n * n 배열을 문자열로 받아주었다.3. 90, 180, 270도 배열을 초기화 해주고 문자열 인덱싱을 통해 각 배열에 알맞은 숫자를 append 해주었다.4. 테스트 케이스를 출력해 주고 join을 통해 한줄에 n개의 숫자가 나오도록 출력해 주었다.참고 사항감이 잡히지 않을 경우 예제를 참고하여 시도해보면 금방 감이 잡힌다.정답 코드def q1961(): # SWEA 1961번 D2 숫자 배열 회전 파이썬 t = int(input()) for i in range(1, t + 1): n = int(input()) array =..

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