Algorithm PS👩🏻💻
-
[백준] 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)] #위치 인덱스를 담은 배열 회전수 ..
-
[백준] 2615번: 오목 (완전탐색, Python)Algorithm PS👩🏻💻/백준 2023. 5. 10. 02:32
문제https://www.acmicpc.net/problem/2615 2615번: 오목오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호www.acmicpc.net 문제 풀이출력해야하는 제일 왼쪽(세로줄은 가장 위쪽) 좌표를 기준으로 [주 대각선, 세로줄, 가로줄, 부 대각선] 순으로 하여 4개의 방향을 탐색했다. (BFS)단, 조건으로 6개 연속인 바둑알은 승리가 아니므로, 연속된 조건의 count를 자신을 제외하고 각 방향으로 5번까지 진행한 후연속된 바둑알의 갯수가 4개인 경우(기준 좌표 제외)만 승리로 간주한다.n = 19blacks = []white..
-
[백준] 2887번: 행성 터널(그래프, Python)Algorithm PS👩🏻💻/백준 2023. 5. 10. 02:21
백준-행성터널(2887) 문제문제때는 2040년, 이민혁은 우주에 자신만의 왕국을 만들었다. 왕국은 N개의 행성으로 이루어져 있다. 민혁이는 이 행성을 효율적으로 지배하기 위해서 행성을 연결하는 터널을 만들려고 한다.행성은 3차원 좌표위의 한 점으로 생각하면 된다. 두 행성 A(xA, yA, zA)와 B(xB, yB, zB)를 터널로 연결할 때 드는 비용은 min(|xA-xB|, |yA-yB|, |zA-zB|)이다.민혁이는 터널을 총 N-1개 건설해서 모든 행성이 서로 연결되게 하려고 한다. 이때, 모든 행성을 터널로 연결하는데 필요한 최소 비용을 구하는 프로그램을 작성하시오.입력첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진..
-
[프로그래머스] 기사단원의 무기(Python)Algorithm PS👩🏻💻/프로그래머스 2023. 5. 10. 02:00
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/136798 코드 def solution(number, limit, power): arms = [] for n in range(1, number + 1): temp = [] for i in range(1, int(n ** 0.5)+1): if n % i == 0: temp.append(i) if i ** 2 != n: temp.append(n//i) arms.append(power if len(temp) > limit else len(temp)) return sum(arms)
-
[프로그래머스] 개인정보 수집 유효기간(Python)Algorithm PS👩🏻💻/프로그래머스 2023. 5. 10. 01:59
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150370 후기 : 처음엔 약관의 기간이 월 기준이라 Month, year 가 12월이 넘어가면 변경하고, day는 유지하는 식으로 했지만, 그래도 결국엔 변경된 날짜 & 오늘 날짜를 비교해야 하므로, datetime을 쓰다가 결국 시간 초과가 났다. (계산, datetime 쓰기 위해 형변환 많이써서 그런듯..) 각 달의 날짜 수(day)가 동일하면, 날짜 비교 시 가장 빠른 방법은 날짜 수 연산이다. 코드 def solution(today, terms, privacies): answer = [] dict_term = {} for term in terms: k, v = term.split..
-
[프로그래머스] 타켓 넘버(Python)Algorithm PS👩🏻💻/프로그래머스 2023. 5. 10. 01:58
문제 링크 - 타겟 넘버(43165) 문제 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다..
-
[이코테] chap9. 최단 경로Algorithm PS👩🏻💻/개념 2023. 5. 8. 01:40
최단 경로 최단 경로(Shortest Path) : 특정 지점까지 가장 빠르게 도달하는 방법을 찾는 알고리즘. 최단 경로 문제는 보통 그래프를 이용해 표현한다. 각 지점(국가, 학교) -> '노드', 지점간 연결된 도로 ->'간선'으로 표현된다. 코테에선 최단 경로를 출력하는 문제 보단, '최단 거리'를 요구하는 문제가 많이 출제된다. 학부 수준의 다익스트라(Dijkstra) 최단 경로 알고리즘 플로이드 워셜(Floyd-Warshall) 알고리즘 벨만포드 알고리즘 최단 거리 알고리즘엔 3가지가 있지만, 그 중에서도 코테에 자주 등장하는 것은 2가지이므로 이것만 우선적으로 설명한다. 최단 경로 알고리즘의 대표적 유형 3가지 한 지점에서 다른 특정 지점까지의 최단 경로 (다익스트라) 한 지점에서 모든 지점까..
-
[백준] 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초나 되기 때문에 누적해서 계속 돌려도 통과하는 것 ..