Algorithm PS👩🏻💻/Implementation
-
[백준]14500번: 테트로미노(Python)Algorithm PS👩🏻💻/Implementation 2023. 8. 11. 02:29
문제 링크 https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 풀이 풀이 설명 분류: 구현, 완전탐색 우선 한 좌표를 시작점이라고 생각하고 5가지 블록 * 4(회전) * 2(대칭) * 모든 좌표(500*500) = 1천만 -> 2초이므로 완탐 가능 5가지 블럭 모양에 대해 회전, 대칭을 다 그려본다. 그러면 네모 모양과 막대 모양, ㅜ 모양, 복잡한 꺾인 모양은 8가지로 안만들어도 돌려도 같은 모양인 경우가 나올 것이다. 이를 제외하면 총 19가지..
-
[백준] 2469번: 사다리 타기(Python)Algorithm PS👩🏻💻/Implementation 2023. 6. 23. 02:12
문제 링크 https://www.acmicpc.net/problem/2469 2469번: 사다리 타기 첫 줄에는 참가한 사람의 수 k가 나온다(3 ≤ k ≤ 26). 그 다음 줄에는 가로 막대가 놓일 전체 가로 줄의 수를 나타내는 n이 나온다(3 ≤ n ≤ 1,000). 그리고 세 번째 줄에는 사다리를 타고 난 후 결정 www.acmicpc.net 풀이 처음 아이디어로는 '?'를 제외한 나머지 사다리를 탄 후 결과 값과 비교하려 했지만 -> '?'의 위치도 중요해서 복잡해짐. [풀이 참고함] 핵심: 가로줄이 있으면 두 알파벳이 교환된다. 첫 줄(초기값) ~ 물음표 줄 전까지 사다리 타기 진행 & 맨 밑(결과)~물음표 다음줄까지 진행 (아래서 위로) 그럼 물음표 줄을 가운데에 두고 before, '???'..
-
[프로그래머스] 2016년(Python)Algorithm PS👩🏻💻/Implementation 2023. 5. 23. 15:07
1. 2016년 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12901 개념 & 문법 - 개념 1. 윤년 윤년: 유일하게 2월에 2/29이 추가되어 1년이 366일이 되는 것을 의미한다. 윤년의 조건 4로 나누어 떨어지면 -> 윤년 4로 나누어 떨어져도 100으로 나누어 떨어지면 -> 평년 100으로 나누어 떨어져도 400으로 나누어 떨어지면 -> 윤년 => year % 4 == 0 and year % 100 != 0 or year % 400 == 0 [날수를 이용하여 요일 구하기] https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=itinstructor&logNo..
-
[백준] 14719번: 빗물 (Python)Algorithm PS👩🏻💻/Implementation 2023. 5. 14. 18:08
문제 링크 https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 풀이 풀이 설명 이중 배열을 만들어 벽은 1, 빈곳은 0 설정 양쪽이 벽으로 둘러싸여야 빗물이 고이므로, 현재 좌표 기준 왼쪽이 벽이고 현재가 비어있으면 현재 좌표를 리스트(starts)에 넣는다. 오른쪽으로만 탐색(bfs)하여 벽과 부딪힌 경우만 result에 빈 칸의 수를 넣는다. 풀이 코드 n, m = map(int, input().split()) walls = ..
-
[백준] 16926번: 배열 돌리기1(Python)Algorithm PS👩🏻💻/Implementation 2023. 5. 10. 13:28
문제 https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 문제 풀이 회전하는 행렬의 인덱스들을 1차원 배열로 뽑아 놓는다.(반시계방향으로) ex. n, m, r = 2, 3, 2 array = [[1, 2, 3], [4, 5, 6]] [(0, 0), (1, 0), (1, 1), (1, 2), (0, 2), (0, 1)] #위치 인덱스를 담은 배열 회전수 ..
-
[백준] 17276번: 배열 돌리기 (Python)Algorithm PS👩🏻💻/Implementation 2023. 5. 8. 01:34
문제 링크 https://www.acmicpc.net/problem/17276 17276번: 배열 돌리기 각 테스트 케이스에 대해 회전 연산을 마친 후 배열의 상태를 출력한다. n줄에 걸쳐 각 줄에 n개의 정수를 공백으로 구분하여 출력한다. www.acmicpc.net 풀이 코드 시간을 줄이기 위해 코드가 길어졌음. -> 제한 시간이 3초라 안길었어도 될 뻔했다.. 주대각선, 가운데열, 부대각선, 가운데행 이 4가지 줄만 바뀌므로, 원래 배열에서 이 4가지를 빼서 before 배열에 담아둔다. after 배열에 바뀌는 부분만 담는다. 각도에 따라 처음 배열의 주 대각선 원소들이 놓여지는 방향이 다르므로, 규칙에 따라 8가지로 나누었다. (시간 제한이 3초나 되기 때문에 누적해서 계속 돌려도 통과하는 것 ..